From 9c97cf8a1b348cb1786ea86b3b402af8f69b2b3b Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 07 九月 2018 21:01:49 +0800
Subject: [PATCH] 3243 【开发】开服限时活动定制
---
System/DailyQuest/DailyQuestData.cs | 22 +++++++++-
Utility/TimeUtility.cs | 3 +
Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs | 41 +++++++++++---------
System/DailyQuest/DailyQuestModel.cs | 18 +++------
4 files changed, 51 insertions(+), 33 deletions(-)
diff --git a/Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs b/Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs
index 4d70455..300073e 100644
--- a/Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs
+++ b/Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs
@@ -1,21 +1,26 @@
using UnityEngine;
using System.Collections;
-//A0 05 同步开服天数 #tagOpenServerDay
-
-public class HA005_tagOpenServerDay : GameNetPackBasic {
- public ushort Day; // 已开服天数,从0开始
- public byte IsMixServer; //是否是合服服务器
- public ushort MixDay; // 已合服天数,从0开始
-
- public HA005_tagOpenServerDay () {
- _cmd = (ushort)0xA005;
- }
-
- public override void ReadFromBytes (byte[] vBytes) {
- TransBytes (out Day, vBytes, NetDataType.WORD);
- TransBytes (out IsMixServer, vBytes, NetDataType.BYTE);
- TransBytes (out MixDay, vBytes, NetDataType.WORD);
- }
-
-}
+//A0 05 鍚屾寮�鏈嶅ぉ鏁� #tagOpenServerDay
+
+public class HA005_tagOpenServerDay : GameNetPackBasic
+{
+ public ushort Day; // 宸插紑鏈嶅ぉ鏁帮紝浠�0寮�濮�
+ public byte IsMixServer; //鏄惁鏄悎鏈嶆湇鍔″櫒
+ public ushort MixDay; // 宸插悎鏈嶅ぉ鏁帮紝浠�0寮�濮�
+ public string OpenServerTime; //寮�鏈嶆椂闂磞yyy-MM-dd HH:mm:ss
+
+ public HA005_tagOpenServerDay()
+ {
+ _cmd = (ushort)0xA005;
+ }
+
+ public override void ReadFromBytes(byte[] vBytes)
+ {
+ TransBytes(out Day, vBytes, NetDataType.WORD);
+ TransBytes(out IsMixServer, vBytes, NetDataType.BYTE);
+ TransBytes(out MixDay, vBytes, NetDataType.WORD);
+ TransBytes(out OpenServerTime, vBytes, NetDataType.Chars, 19);
+ }
+
+}
\ No newline at end of file
diff --git a/System/DailyQuest/DailyQuestData.cs b/System/DailyQuest/DailyQuestData.cs
index 7f9f47c..1f6008e 100644
--- a/System/DailyQuest/DailyQuestData.cs
+++ b/System/DailyQuest/DailyQuestData.cs
@@ -214,7 +214,7 @@
}
var isSpecificDay = TimeUtility.OpenWeekCnt <= 1;
- var openDayWeek = (int)(TimeUtility.ServerNow - new TimeSpan(TimeUtility.OpenDay * TimeSpan.TicksPerDay)).DayOfWeek;
+ var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
var dayIndex = TimeUtility.OpenDay + 1;
if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes.ContainsKey(dayIndex))
{
@@ -256,7 +256,7 @@
public bool TryGetTodayNearestOpenTime(out HourMinute _hourMinute)
{
var isSpecificDay = TimeUtility.OpenWeekCnt <= 1;
- var openDayWeek = (int)(TimeUtility.ServerNow - new TimeSpan(TimeUtility.OpenDay * TimeSpan.TicksPerDay)).DayOfWeek;
+ var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
var dayIndex = TimeUtility.OpenDay + 1;
if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes.ContainsKey(dayIndex))
{
@@ -302,6 +302,23 @@
return true;
}
+ }
+
+ public bool ContainTimeNode(int week, int timeNode)
+ {
+ var hourMinutes = GetHourMinuteByWeek(week);
+ if (hourMinutes != null)
+ {
+ foreach (var item in hourMinutes)
+ {
+ if (item.hourBegin * 60 + item.minuteBegin == timeNode)
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
}
public string ToOpenTimeString()
@@ -451,7 +468,6 @@
{
return StringUtility.Contact(hourBegin, ":", minuteBegin);
}
-
}
public static int Compare(HourMinute _lhs, HourMinute _rhs)
diff --git a/System/DailyQuest/DailyQuestModel.cs b/System/DailyQuest/DailyQuestModel.cs
index 07ac51d..3d31c5e 100644
--- a/System/DailyQuest/DailyQuestModel.cs
+++ b/System/DailyQuest/DailyQuestModel.cs
@@ -451,22 +451,16 @@
public List<int> GetQuestByWeekTimeNode(int _week, int _timeNode)
{
- if (questCalendar.ContainsKey(_week))
+ var quests = new List<int>();
+ foreach (var item in dailyQuestOpenTimes.Values)
{
- var timeNodeToQuests = questCalendar[_week];
- if (timeNodeToQuests.ContainsKey(_timeNode))
+ if (item.ContainTimeNode(_week, _timeNode))
{
- return questCalendar[_week][_timeNode];
- }
- else
- {
- return null;
+ quests.Add(item.id);
}
}
- else
- {
- return null;
- }
+
+ return quests;
}
/// <summary>
diff --git a/Utility/TimeUtility.cs b/Utility/TimeUtility.cs
index e055910..1771abf 100644
--- a/Utility/TimeUtility.cs
+++ b/Utility/TimeUtility.cs
@@ -95,6 +95,8 @@
get; private set;
}
+ public static DateTime openServerTime;
+
public static int OpenWeekCnt
{
get
@@ -151,6 +153,7 @@
OpenDay = package.Day;
IsMixServer = package.IsMixServer == 1;
MixOpenDay = package.MixDay;
+ DateTime.TryParse(package.OpenServerTime, out openServerTime);
if (OnServerOpenDayRefresh != null)
{
OnServerOpenDayRefresh();
--
Gitblit v1.8.0