From 01b217225f37e85d75a6534896180355e2a90cc4 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 15 十一月 2018 14:33:31 +0800
Subject: [PATCH] 4798 【前端】【1.3】日常界面-限时活动界面今日活动开启时间色值修改,新增已错过活动

---
 System/DailyQuest/DailyQuestBehaviour.cs |   10 ++++
 System/DailyQuest/DailyQuestModel.cs     |   76 +++++++++++++++++++++-----------------
 2 files changed, 51 insertions(+), 35 deletions(-)

diff --git a/System/DailyQuest/DailyQuestBehaviour.cs b/System/DailyQuest/DailyQuestBehaviour.cs
index 15f9778..ef70efa 100644
--- a/System/DailyQuest/DailyQuestBehaviour.cs
+++ b/System/DailyQuest/DailyQuestBehaviour.cs
@@ -20,6 +20,7 @@
         [SerializeField] Text m_PracticePoint;
         [SerializeField] Text m_UnLockCondition;
         [SerializeField] TextEx m_Supplementary;
+        [SerializeField] FontColorSizeConfig m_TimeColor;
         [SerializeField] Text m_AssistPoint;
         [SerializeField] Text m_GotoTxt;
         [SerializeField] Image m_Icon;
@@ -27,6 +28,7 @@
         [SerializeField] Button m_Goto;
         [SerializeField] Button m_Func;
         [SerializeField] Text m_FuncDisplay;
+        [SerializeField] RectTransform m_TimeMiss;
         [SerializeField] Transform m_Complete;
         [SerializeField] Transform m_Locked;
         [SerializeField] RedpointBehaviour m_RedpointBehaviour;
@@ -40,7 +42,6 @@
 
         DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
-
         TrialDungeonModel trialDungeonModel { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } }
 
         DailyQuestModel.DailyQuestState state = DailyQuestModel.DailyQuestState.Normal;
@@ -215,6 +216,7 @@
             m_AssistPoint.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Completed);
             m_Goto.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Normal || state == DailyQuestModel.DailyQuestState.CanBuyTimes);
             m_Complete.gameObject.SetActive(false);
+            m_TimeMiss.gameObject.SetActive(false);
 
             switch (state)
             {
@@ -226,11 +228,17 @@
                     HourMinute hourMinute;
                     if (model.TryGetOpenTime(data.id, out openTime2) && openTime2.TryGetTodayNearestOpenTime(out hourMinute))
                     {
+                        if (hourMinute.AfterOpenTime(TimeUtility.ServerNow.Hour, TimeUtility.ServerNow.Minute) && completedTimes == 0)
+                        {
+                            m_TimeMiss.gameObject.SetActive(true);
+                        }
                         m_Supplementary.text = StringUtility.Contact(Language.Get("DailyQuestWin_OpenTime"), hourMinute.ToOpenTime());
+                        m_Supplementary.color = m_TimeColor.GetColorSize("TodayColor").color;
                     }
                     else
                     {
                         m_Supplementary.text = openTime2.ToOpenTimeString();
+                        m_Supplementary.color = m_TimeColor.GetColorSize("NotTodayColor").color;
                     }
                     break;
                 case DailyQuestModel.DailyQuestState.CanBuyTimes:
diff --git a/System/DailyQuest/DailyQuestModel.cs b/System/DailyQuest/DailyQuestModel.cs
index 6d06421..ed07e0c 100644
--- a/System/DailyQuest/DailyQuestModel.cs
+++ b/System/DailyQuest/DailyQuestModel.cs
@@ -12,7 +12,7 @@
 {
 
     [XLua.LuaCallCSharp]
-	public class DailyQuestModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize, IMapInitOk
+    public class DailyQuestModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize, IMapInitOk
     {
 
         const int DAILYQUEST_REDPOINTID = 78000;
@@ -690,71 +690,79 @@
             var unLock1 = IsDailyQuestUnLock(_lhs);
             var unLock2 = IsDailyQuestUnLock(_rhs);
 
-            if (unLock1 && !unLock2)
+            DailyQuestOpenTime openTime1;
+            TryGetOpenTime(_lhs, out openTime1);
+
+            DailyQuestOpenTime openTime2;
+            TryGetOpenTime(_rhs, out openTime2);
+
+            var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
+            var isActiveDay1 = openTime1.always || openTime1.GetHourMinuteByWeek(dayOfWeek) != null;
+            var isActiveDay2 = openTime2.always || openTime2.GetHourMinuteByWeek(dayOfWeek) != null;
+
+            var inOpenTime1 = openTime1.InOpenTime();
+            var inOpenTime2 = openTime2.InOpenTime();
+
+            var serverHour = TimeUtility.ServerNow.Hour;
+            var serverMinute = TimeUtility.ServerNow.Minute;
+            HourMinute hourMinute1;
+            var miss1 = openTime1.TryGetTodayNearestOpenTime(out hourMinute1) && hourMinute1.AfterOpenTime(serverHour, serverMinute);
+            HourMinute hourMinute2;
+            var miss2 = openTime2.TryGetTodayNearestOpenTime(out hourMinute2) && hourMinute2.AfterOpenTime(serverHour, serverMinute);
+
+            if ((unLock1 && inOpenTime1) && !(unLock2 && inOpenTime2))
             {
                 return -1;
             }
-            else if (!unLock1 && unLock2)
+            else if (!(unLock1 && inOpenTime1) && (unLock2 && inOpenTime2))
             {
                 return 1;
             }
             else
             {
-                DailyQuestOpenTime openTime1;
-                TryGetOpenTime(_lhs, out openTime1);
-
-                DailyQuestOpenTime openTime2;
-                TryGetOpenTime(_rhs, out openTime2);
-
-                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)
+                if ((unLock1 && isActiveDay1 && !miss1) && !(unLock2 && isActiveDay2 && !miss2))
                 {
                     return -1;
                 }
-                else if (!isActiveDay1 && isActiveDay2)
+                else if (!(unLock1 && isActiveDay1 && !miss1) && (unLock2 && isActiveDay2 && !miss2))
                 {
                     return 1;
                 }
                 else
                 {
-                    var inOpenTime1 = openTime1.InOpenTime();
-                    var inOpenTime2 = openTime2.InOpenTime();
-
-                    if (inOpenTime1 && !inOpenTime2)
+                    if ((unLock1 && !isActiveDay1) && !(unLock2 && !isActiveDay2))
                     {
                         return -1;
                     }
-                    else if (!inOpenTime1 && inOpenTime2)
+                    else if (!(unLock1 && !isActiveDay1) && (unLock2 && !isActiveDay2))
                     {
                         return 1;
                     }
-                    else if (!inOpenTime1 && !inOpenTime2)
+                    else
                     {
-                        HourMinute hourMinute1;
-                        var beforeOpenTime1 = openTime1.TryGetTodayNearestOpenTime(out hourMinute1);
-
-                        HourMinute hourMinute2;
-                        var beforeOpenTime2 = openTime2.TryGetTodayNearestOpenTime(out hourMinute2);
-
-                        if (beforeOpenTime1 && !beforeOpenTime2)
+                        if (unLock1 && !unLock2)
                         {
                             return -1;
                         }
-                        else if (!beforeOpenTime1 && beforeOpenTime2)
+                        else if (!unLock1 && unLock2)
                         {
                             return 1;
                         }
                         else
                         {
-                            return HourMinute.Compare(hourMinute1, hourMinute2);
+                            if (!miss1 && miss2)
+                            {
+                                return -1;
+                            }
+                            else if (miss1 && !miss2)
+                            {
+                                return 1;
+                            }
+                            else
+                            {
+                                return _lhs < _rhs ? -1 : 1;
+                            }
                         }
-                    }
-                    else
-                    {
-                        return _lhs < _rhs ? -1 : 1;
                     }
                 }
             }

--
Gitblit v1.8.0