From b184efc783735b0787e9c8ed1f86713c27a83634 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期二, 18 九月 2018 11:18:20 +0800
Subject: [PATCH] 2209 【前端】限时礼包按钮和界面提前开启

---
 System/Vip/LimitedTimePackageWin.cs   |   58 +++++++++++++++----
 System/Vip/LimitedTimePackageTime.cs  |   84 ++++++++++++++++++---------
 System/Vip/LimitedTimePackageModel.cs |    2 
 3 files changed, 103 insertions(+), 41 deletions(-)

diff --git a/System/Vip/LimitedTimePackageModel.cs b/System/Vip/LimitedTimePackageModel.cs
index 4fc80fc..16c5926 100644
--- a/System/Vip/LimitedTimePackageModel.cs
+++ b/System/Vip/LimitedTimePackageModel.cs
@@ -143,7 +143,7 @@
     public bool IsExpired()
     {
         bool IsBool = false;
-        IsBool = OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.GiftPackage);
+        IsBool =(OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.GiftPackage)|| OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.GiftPackage));
         bool IsBuyBool = false;
         OperationBase operationBase;
         if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.GiftPackage, out operationBase))
diff --git a/System/Vip/LimitedTimePackageTime.cs b/System/Vip/LimitedTimePackageTime.cs
index 791fcfb..13043c5 100644
--- a/System/Vip/LimitedTimePackageTime.cs
+++ b/System/Vip/LimitedTimePackageTime.cs
@@ -11,55 +11,83 @@
 
     public class LimitedTimePackageTime:MonoBehaviour {
 
-        [SerializeField] Text m_LimitedTimePackageTime_text;
+        [SerializeField] TimerBehaviour m_Time;
+        [SerializeField] RectTransform m_ContainerAdvance;
+        [SerializeField] Text m_AdvanceTime;
 
         private void OnEnable()
         {
             GlobalTimeEvent.Instance.secondEvent += secondEvent;
+            OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
         }
         private void OnDisable()
         {
             GlobalTimeEvent.Instance.secondEvent -= secondEvent;
+            OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
+        }
+
+        private void DayResetEvent(int resetType)
+        {
+            secondEvent();
         }
 
         private void secondEvent()
         {
-            int time = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.GiftPackage);
-            if (time <= 0)
+            OperationBase operationBase;
+            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.GiftPackage, out operationBase))
             {
-                if (m_LimitedTimePackageTime_text.gameObject.activeSelf)
+                var operation = (operationBase as GiftPackageClass);
+                bool inAdvance = false;
+                var seconds = 0;
+                if (operation.InAdvanceTime(TimeUtility.ServerNow))
                 {
-                    m_LimitedTimePackageTime_text.gameObject.SetActive(false);
-                }
-                return;
-            }
-            if (time>86400)
-            {
-                if (m_LimitedTimePackageTime_text.gameObject.activeSelf)
-                {
-                    m_LimitedTimePackageTime_text.gameObject.SetActive(false);
-                }
-            }
-            else
-            {
-                if (!m_LimitedTimePackageTime_text.gameObject.activeSelf)
-                {
-                    m_LimitedTimePackageTime_text.gameObject.SetActive(true);
-                }
-                if (time<3600)
-                {
-                    m_LimitedTimePackageTime_text.text = TimeUtility.SecondsToHMS(time);
-                    m_LimitedTimePackageTime_text.color = UIHelper.GetUIColor(TextColType.Red);
-
+                    inAdvance = true;
+                    seconds = operation.GetSecondsBeforeStart(TimeUtility.ServerNow);
                 }
                 else
                 {
-                    m_LimitedTimePackageTime_text.text = TimeUtility.SecondsToHMS(time);
-                    m_LimitedTimePackageTime_text.color = UIHelper.GetUIColor(TextColType.Green);
+                    seconds = operation.GetResetSurplusTime();
+                }
+
+                m_ContainerAdvance.gameObject.SetActive(inAdvance);
+                if (inAdvance)
+                {
+                    if (m_Time.gameObject.activeSelf)
+                    {
+                        DisplayTime(0);
+                    }
+                    DisplayAdvance(seconds);
+                }
+                else
+                {
+                    if (seconds * TimeSpan.TicksPerSecond >= TimeSpan.TicksPerDay || seconds <= 0)
+                    {
+                        if (m_Time.gameObject.activeSelf)
+                        {
+                            DisplayTime(0);
+                        }
+                    }
+                    else
+                    {
+                        m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
+                        if (!m_Time.gameObject.activeSelf)
+                        {
+                            DisplayTime(seconds);
+                        }
+                    }
                 }
             }
 
         }
+        void DisplayTime(int seconds)
+        {
+            m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
+            m_Time.Begin(DateTime.Now.AddTicks(seconds * TimeSpan.TicksPerSecond));
+        }
+        void DisplayAdvance(int seconds)
+        {
+            m_AdvanceTime.text = Language.Get("OperationAdvanceOpen", TimeUtility.SecondsToHMS(seconds));
+        }
     }
 
 }
diff --git a/System/Vip/LimitedTimePackageWin.cs b/System/Vip/LimitedTimePackageWin.cs
index 373cc89..e2b7c63 100644
--- a/System/Vip/LimitedTimePackageWin.cs
+++ b/System/Vip/LimitedTimePackageWin.cs
@@ -107,9 +107,19 @@
 
                             if (limitedTimePackageItemModel.IsExpired())
                             {
-                                m_Buy_Btn.interactable = false;
-                                time = 0;
-                                limitedTimePackageItemModel.OpenFreePlat(str, gift.gifts[0].rmb, gift.gifts[0].OrderInfo);
+                                if (OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.GiftPackage))
+                                {
+                                    SysNotifyMgr.Instance.ShowTip("LimitGilt1");
+                                    return;
+                                }
+                                else
+                                {
+                                    m_Buy_Btn.interactable = false;
+                                    time = 0;
+                                    limitedTimePackageItemModel.OpenFreePlat(str, gift.gifts[0].rmb, gift.gifts[0].OrderInfo);
+                                    return;
+                                }
+                              
                             }
                             else
                             {
@@ -160,8 +170,8 @@
                         }
                     }
                 }
-                // m_Text_ActivityTimeTo.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime());
             }
+            DisplaySurplusTime();
         }
 
 
@@ -190,18 +200,42 @@
         }
         private void secondEvent()
         {
-            int time = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.GiftPackage);
-            if (time <= 0)
+            DisplaySurplusTime();
+        }
+        private void DisplaySurplusTime()
+        {
+            OperationBase operationBase;
+            OperationTimeHepler.Instance.TryGetOperationTime(Operation.GiftPackage, out operationBase);
+            var seconds = 0;
+            var inAdvance = false;
+            if (operationBase != null)
             {
-                m_Text_ActivityTimeTo.text = Language.Get("LimitGift2");
+                if (operationBase.InAdvanceTime(TimeUtility.ServerNow))
+                {
+                    inAdvance = true;
+                    seconds = operationBase.GetSecondsBeforeStart(TimeUtility.ServerNow);
+                }
+                else
+                {
+                    GiftPackageClass operation = operationBase as GiftPackageClass;
+                    seconds = operation.GetResetSurplusTime();
+                }
             }
-            if (time > 0)
+            if (seconds > 0)
             {
-                string str = String.Format(Language.Get("LimitGift1"), TimeUtility.SecondsToDHMSCHS(time));
-                m_Text_ActivityTimeTo.text = str;
-             //  m_Text_ActivityTimeTo.color = UIHelper.GetUIColor(TextColType.Green);
+                if (inAdvance)
+                {
+                    m_Text_ActivityTimeTo.text = Language.Get("OperationAdvanceOpen", TimeUtility.SecondsToDHMSCHS(seconds));
+                }
+                else
+                {
+                    m_Text_ActivityTimeTo.text = Language.Get("LimitGift1", TimeUtility.SecondsToDHMSCHS(seconds));
+                }
             }
-            
+            else
+            {
+                m_Text_ActivityTimeTo.text = Language.Get("ActivityEnd");
+            }
         }
 
         #endregion

--
Gitblit v1.8.0