From fb0345c8f9815f1b9f655d6363da3a9cedd3944f Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 10 九月 2018 11:25:07 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/DailyQuest/DailyQuestModel.cs |   94 ++++++++++-------------------------------------
 1 files changed, 20 insertions(+), 74 deletions(-)

diff --git a/System/DailyQuest/DailyQuestModel.cs b/System/DailyQuest/DailyQuestModel.cs
index 789a942..3f1b95b 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>
@@ -476,14 +470,13 @@
         /// <returns></returns>
         public Dictionary<int, List<int>> GetQuestByWeekTime(int _week)
         {
-            if (questCalendar.ContainsKey(_week))
+            var timeNodes = new Dictionary<int, List<int>>();
+            foreach (var item in GeneralConfig.Instance.dailyQuestOpenTime)
             {
-                return questCalendar[_week];
+                timeNodes[item] = GetQuestByWeekTimeNode(_week, item);
             }
-            else
-            {
-                return null;
-            }
+
+            return timeNodes;
         }
 
         private void OnFunctionStateChange(int _functionId)
@@ -731,22 +724,9 @@
                 DailyQuestOpenTime openTime2;
                 TryGetOpenTime(_rhs, out openTime2);
 
-                var isValidServerTime1 = openTime1.IsValidServerOpenTime();
-                var isValidServerTime2 = openTime2.IsValidServerOpenTime();
-
-                if (isValidServerTime1 && !isValidServerTime2)
-                {
-                    return -1;
-                }
-
-                if (!isValidServerTime1 && isValidServerTime2)
-                {
-                    return 1;
-                }
-
-                var dayOfWeek = (int)DateTime.Now.DayOfWeek;
-                var isActiveDay1 = openTime1.always || openTime1.openTimes.ContainsKey(dayOfWeek);
-                var isActiveDay2 = openTime2.always || openTime2.openTimes.ContainsKey(dayOfWeek);
+                var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
+                var isActiveDay1 = openTime1.always || openTime1.GetHourMinuteByWeek(dayOfWeek) != null;
+                var isActiveDay2 = openTime2.always || openTime2.GetHourMinuteByWeek(dayOfWeek) != null;
 
                 if (isActiveDay1 && !isActiveDay2)
                 {
@@ -823,12 +803,6 @@
             DailyQuestOpenTime openTime;
             if (TryGetOpenTime(_dailyQuestId, out openTime))
             {
-                var validServerTime = openTime.IsValidServerOpenTime();
-                if (!validServerTime)
-                {
-                    return DailyQuestState.ServerForbid;
-                }
-
                 var inOpenTime = openTime.InOpenTime();
                 if (!inOpenTime)
                 {
@@ -1000,12 +974,16 @@
                 {
                     case 1:
                         var activityOpenTime = Config.Instance.Get<DailyQuestOpenTimeConfig>(config.RelatedID);
-                        openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID, activityOpenTime.OpenTime, activityOpenTime.Duration);
+                        openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID);
+                        openTime.ParseQuestNormalOpenTime(activityOpenTime.OpenTime, activityOpenTime.Duration);
+                        openTime.ParseQuestSpecificOpenTimes(DailyQuestSpecialOpenTimeConfig.GetDailyQuestTimes(config.RelatedID));
                         dailyActionToDailyQuestTable[config.RelatedID] = config.ID;
                         break;
                     case 2:
                         var dungeonOpenTimes = DungeonStateTimeConfig.DungeonStateCanEnterFB(config.RelatedID);
-                        openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID, dungeonOpenTimes);
+                        openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID);
+                        openTime.ParseDungeonNormalOpenTimes(dungeonOpenTimes);
+                        openTime.ParseDungeonSpecificOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.RelatedID));
                         dungeonToDailyQuestTable[config.RelatedID] = config.ID;
                         break;
                 }
@@ -1014,37 +992,6 @@
                 dailyQuests[config.ID] = new DailyQuestData(config.ID, DAILYQUEST_REDPOINTIDBASE + redpointIndex++, redpointParent);
             }
 
-            for (int i = 0; i < 7; i++)
-            {
-                questCalendar[i] = new Dictionary<int, List<int>>();
-            }
-
-            foreach (var key in dailyQuestOpenTimes.Keys)
-            {
-                var dailyQuestOpenTime = dailyQuestOpenTimes[key];
-                foreach (var week in dailyQuestOpenTime.openTimes.Keys)
-                {
-                    var hourMinutes = dailyQuestOpenTime.openTimes[week];
-                    var timeNodeToQuests = questCalendar[week];
-                    for (int i = 0; i < hourMinutes.Count; i++)
-                    {
-                        var hourMinute = hourMinutes[i];
-                        var timeNode = hourMinute.hourBegin * 60 + hourMinute.minuteBegin;
-                        List<int> quests;
-                        if (timeNodeToQuests.ContainsKey(timeNode))
-                        {
-                            quests = timeNodeToQuests[timeNode];
-                        }
-                        else
-                        {
-                            timeNodeToQuests[timeNode] = quests = new List<int>();
-                        }
-
-                        quests.Add(key);
-                    }
-
-                }
-            }
         }
 
         public enum DailyQuestCategory
@@ -1056,7 +1003,6 @@
         public enum DailyQuestState
         {
             Locked = 0,
-            ServerForbid = 1,
             OutTime = 2,
             Normal = 3,
             CanBuyTimes = 5,

--
Gitblit v1.8.0