From 0ab6e6f007514db871e381c73dc2f2007be0f204 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期六, 01 九月 2018 16:47:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Welfare/OperationTimeHepler.cs     |  110 ++++++++++++++++++++++++++++++++++++
 System/Welfare/NPracticePointWin.cs       |   20 ++++--
 System/Welfare/MultipleRealmPointModel.cs |   49 +++++++---------
 3 files changed, 145 insertions(+), 34 deletions(-)

diff --git a/System/Welfare/MultipleRealmPointModel.cs b/System/Welfare/MultipleRealmPointModel.cs
index 881227e..c1c4ed9 100644
--- a/System/Welfare/MultipleRealmPointModel.cs
+++ b/System/Welfare/MultipleRealmPointModel.cs
@@ -8,6 +8,7 @@
         public Redpoint multipleRed = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20908);
         public string LocalRecord_Key;
         bool isNewDay = false;
+        bool openNotify = false;
 
         public event Action<int> onStateUpate;
 
@@ -29,13 +30,10 @@
 
         public void OnPlayerLoginOk()
         {
+            openNotify = false;
             LocalRecord_Key = StringUtility.Contact("MultipleRealmRecord", PlayerDatas.Instance.baseData.PlayerID);
-            OperationTimeHepler.Instance.operationStartEvent -= RefreshOperationState;
-            OperationTimeHepler.Instance.operationStartEvent += RefreshOperationState;
-            OperationTimeHepler.Instance.operationEndEvent -= RefreshOperationState;
-            OperationTimeHepler.Instance.operationEndEvent += RefreshOperationState;
-            OperationTimeHepler.Instance.operationServerCloseEvent -= RefreshOperationClose;
-            OperationTimeHepler.Instance.operationServerCloseEvent += RefreshOperationClose;
+            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
+            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
             CheckShowRed();
         }
 
@@ -50,7 +48,7 @@
             {
                 OperationBase operation;
                 OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operation);
-                return operation != null && operation.SatisfyOpenCondition() && operation.InDay(TimeUtility.ServerNow);
+                return operation != null && (operation as OperationMultipleRealmPoint).InActiveTime(TimeUtility.ServerNow);
             }
         }
 
@@ -70,48 +68,45 @@
             }
         }
 
-
-        private void RefreshOperationClose(Operation type)
+        private void SecondEvent()
         {
-            if (type != Operation.MultipRealmPoint) return;
-            CheckShowRed();
-            if (onStateUpate != null)
+            if (IsOpen && !openNotify)
             {
-                onStateUpate(8);
+                openNotify = true;
+                CheckShowRed();
+                if (onStateUpate != null)
+                {
+                    onStateUpate(8);
+                }
             }
-        }
-
-        private void RefreshOperationState(Operation type, int arg2)
-        {
-            if (type != Operation.MultipRealmPoint) return;
-            CheckShowRed();
-            if (onStateUpate != null)
+            else if (!IsOpen && openNotify)
             {
-                onStateUpate(8);
+                openNotify = false;
+                CheckShowRed();
+                if (onStateUpate != null)
+                {
+                    onStateUpate(8);
+                }
             }
         }
 
         public void CheckShowRed(bool isClick = false)
         {
-            bool isOpen = OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.MultipRealmPoint);
-            if (!isOpen) return;
+            if (!IsOpen) return;
 
             if(!isNewDay)
             {
               
                 if (!PlayerPrefs.HasKey(LocalRecord_Key))
                 {
-                    DebugEx.Log("璁剧疆璁板綍鏃堕棿锛�" + TimeUtility.ServerNow.Day);
                     LocalSave.SetInt(LocalRecord_Key, TimeUtility.ServerNow.Day);
                     isNewDay = true;
                 }
                 else
                 {
-                    DebugEx.Log("寰楀埌璁板綍鏃堕棿锛�" + LocalSave.GetInt(LocalRecord_Key));
                     if (TimeUtility.ServerNow.Day != LocalSave.GetInt(LocalRecord_Key))
                     {
                         isNewDay = true;
-                        DebugEx.Log("璁剧疆璁板綍鏃堕棿锛�" + TimeUtility.ServerNow.Day);
                         LocalSave.SetInt(LocalRecord_Key, TimeUtility.ServerNow.Day);
                     }
                 }
@@ -119,7 +114,7 @@
              
             if(!isClick)
             {
-                if (isOpen && isNewDay)
+                if (IsOpen && isNewDay)
                 {
                     multipleRed.state = RedPointState.Simple;
                 }
diff --git a/System/Welfare/NPracticePointWin.cs b/System/Welfare/NPracticePointWin.cs
index 4063c39..51dc40e 100644
--- a/System/Welfare/NPracticePointWin.cs
+++ b/System/Welfare/NPracticePointWin.cs
@@ -70,15 +70,21 @@
 
         private void RefreshSecond()
         {
-            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.MultipRealmPoint);
-            if (seconds > 0)
+            OperationBase operation;
+            OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operation);
+            if(operation != null)
             {
-                remainTimeText.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToDHMSCHS(seconds), "</color>");
+                int seconds = (operation as OperationMultipleRealmPoint).GetRemainTime(TimeUtility.ServerNow);
+                if (seconds > 0)
+                {
+                    remainTimeText.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToDHMSCHS(seconds), "</color>");
+                }
+                else
+                {
+                    remainTimeText.text = UIHelper.GetTextColorByItemColor(TextColType.Red, Language.Get("XMZZ110"));
+                }
             }
-            else
-            {
-                remainTimeText.text = UIHelper.GetTextColorByItemColor(TextColType.Red, Language.Get("XMZZ110"));
-            }
+          
         }
     }
 }
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 340f5a6..0eaf6a6 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -1320,10 +1320,120 @@
     public class OperationMultipleRealmPoint : OperationBase
     {
         public int multiplePractice; //鍊嶆暟
+        public int startHour = 5;
+        public int startMinute = 0;
+        public int startSecond = 0;
         public override bool SatisfyOpenCondition()
         {
             return PlayerDatas.Instance.baseData.LV >= limitLv;
         }
+
+        public  bool InActiveTime(DateTime time)
+        {
+            if (time.Year != startDate.year && time.Year != endDate.year)
+            {
+                return false;
+            }
+
+            if (startDate.year != endDate.year)
+            {
+                if (time.Year == startDate.year)
+                {
+                    if (time.Month < startDate.month)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == startDate.month && time.Day < startDate.day)
+                    {
+                        return false;
+                    }
+                    else if(time.Month == startDate.month
+                        && time.Day == startDate.day
+                        && time.Hour < startHour)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == startDate.month
+                       && time.Day == startDate.day
+                       && time.Hour == startHour
+                       && time.Minute < startMinute)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == startDate.month
+                      && time.Day == startDate.day
+                      && time.Hour == startHour
+                      && time.Minute == startMinute
+                        && time.Second < startSecond)
+                    {
+                        return false;
+                    }
+                }
+                else if (time.Year == endDate.year)
+                {
+                    if (time.Month > endDate.month)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == endDate.month && time.Day > endDate.day)
+                    {
+                        return false;
+                    }
+                    else if(time.Month == endDate.month 
+                        && time.Day == endDate.day
+                        && time.Hour > startHour)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == endDate.month
+                       && time.Day == endDate.day
+                       && time.Hour == startHour
+                       && time.Minute > startMinute)
+                    {
+                        return false;
+                    }
+                    else if (time.Month == endDate.month
+                      && time.Day == endDate.day
+                      && time.Hour == startHour
+                      && time.Minute == startMinute
+                        && time.Second > startSecond)
+                    {
+                        return false;
+                    }
+                }
+            }
+            else
+            {
+                if (time.Month < startDate.month 
+                    || (time.Month == startDate.month && time.Day < startDate.day)
+                    || (time.Month == startDate.month && time.Day == startDate.day && time.Hour < startHour)
+                    || (time.Month == startDate.month && time.Day == startDate.day && time.Hour == startHour && time.Minute < startMinute)
+                    || (time.Month == startDate.month && time.Day == startDate.day && time.Hour == startHour && time.Minute == startMinute) && time.Second < startSecond)
+                {
+                    return false;
+                }
+                if (time.Month > endDate.month 
+                    || (time.Month == endDate.month && time.Day > endDate.day)
+                    || (time.Month == endDate.month && time.Day == endDate.day && time.Hour > startHour)
+                     || (time.Month == endDate.month && time.Day == endDate.day && time.Hour == startHour && time.Minute > startMinute)
+                    || (time.Month == endDate.month && time.Day == endDate.day && time.Hour == startHour && time.Minute == startMinute) && time.Second > startSecond)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public int GetRemainTime(DateTime time)
+        {
+            var seconds = 0;
+            if (InActiveTime(time))
+            {
+                DateTime endTime = new DateTime(endDate.year, endDate.month, endDate.day, startHour, 0, 0);
+                seconds = (int)(endTime - time).TotalSeconds;
+            }
+            return seconds;
+        }
     }
 
     public enum Operation

--
Gitblit v1.8.0