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