From 0012445c0109fa67987800a1bac8f32e989b2d19 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期三, 15 八月 2018 15:16:01 +0800
Subject: [PATCH] Merge branch 'master' into leonard

---
 System/OpenServerActivity/ImpactRankModel.cs |  209 +++++++++++++++-------------------------------------
 1 files changed, 61 insertions(+), 148 deletions(-)

diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index 227c8ed..9a72876 100644
--- a/System/OpenServerActivity/ImpactRankModel.cs
+++ b/System/OpenServerActivity/ImpactRankModel.cs
@@ -7,7 +7,7 @@
 
 namespace Snxxz.UI
 {
-    public class ImpactRankModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
+    public class ImpactRankModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
     {
         public override void Init()
         {
@@ -15,6 +15,7 @@
             PlayerDatas.Instance.rank.OnRefreshRank += OnRefreshRank;
             TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+            OpenServerActivityCenter.Instance.Register(0, this);
         }
 
         public override void UnInit()
@@ -49,6 +50,10 @@
             if (_id == 125)
             {
                 UpdateRedpoint();
+                if (onStateUpate != null)
+                {
+                    onStateUpate(0);
+                }
             }
         }
 
@@ -416,6 +421,8 @@
 
         #region 鍗忚
         public event Action OnAwardGetEvent;
+        public event Action<int> onStateUpate;
+
         private Dictionary<int, OpenServerPlayerData> impactAwardGetDict = new Dictionary<int, OpenServerPlayerData>();
         public void UpdateGetState(HAB17_tagMCOpenServerCampaignAwardList _package)
         {
@@ -522,7 +529,8 @@
         {
             var _redpoint = m_Redpoints[_type];
             _redpoint.state = RedPointState.None;
-            if (IsMissImpactRank(_type) || !IsActivityClose(_type))
+            bool _locked = IsLock(_type);
+            if (IsMissImpactRank(_type) || _locked)
             {
                 return;
             }
@@ -551,7 +559,7 @@
                         }
                     }
                 }
-                else
+                else if (IsActivityClose(_type))
                 {
                     var _start = (_cfg as OSCBillRankAwardConfig).RankA;
                     var _end = (_cfg as OSCBillRankAwardConfig).RankB;
@@ -619,98 +627,51 @@
 
         #region 涓荤晫闈㈢壒鏁�
         public bool OSCEffectOpen { get; set; }
+
+        public bool IsOpen
+        {
+            get
+            {
+                return TimeUtility.OpenDay < openServerActivityDays && FuncOpen.Instance.IsFuncOpen(125);
+            }
+        }
+
+        public bool priorityOpen
+        {
+            get
+            {
+                var state = impactRankRedpoint.state;
+                return state == RedPointState.Simple || state == RedPointState.GetReward;
+            }
+        }
         #endregion
     }
 
     public class OpenServerActivityCenter : Singleton<OpenServerActivityCenter>
     {
-        ImpactRankModel impactRankModel { get { return ModelCenter.Instance.GetModel<ImpactRankModel>(); } }
-        OSRedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<OSRedEnvelopeModel>(); } }
-        OSTimeLimitGiftModel timeLimitGiftModel { get { return ModelCenter.Instance.GetModel<OSTimeLimitGiftModel>(); } }
-        FlashSaleModel flashSaleModel { get { return ModelCenter.Instance.GetModel<FlashSaleModel>(); } }
-
-        ConsumeRebateModel consumeRebateModel { get { return ModelCenter.Instance.GetModel<ConsumeRebateModel>(); } }
-
-        MultipleExpModel multipleExpModel { get { return ModelCenter.Instance.GetModel<MultipleExpModel>(); } }
-        BossRebornModel bossRebornModel { get { return ModelCenter.Instance.GetModel<BossRebornModel>(); } }
-
-        MultipleRealmPointModel multipleRealmModel { get { return ModelCenter.Instance.GetModel<MultipleRealmPointModel>(); } }
-
         public event Action openServerActivityStateChange;
+
+        Dictionary<int, IOpenServerActivity> openServerActivitys = new Dictionary<int, IOpenServerActivity>();
 
         public OpenServerActivityCenter()
         {
             TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
-            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
-            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
-            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
-            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
         }
 
-        private void OperationAdvanceEvent(Operation type)
+        public void Register(int funcOrder, IOpenServerActivity activity)
         {
-            if (type == Operation.FlashSale)
+            if (!openServerActivitys.ContainsKey(funcOrder))
             {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
+                openServerActivitys.Add(funcOrder, activity);
+                activity.onStateUpate += OnStateUpate;
             }
         }
 
-        private void OperationEndEvent(Operation type, int state)
+        private void OnStateUpate(int _order)
         {
-            if ((type == Operation.FlashSale || type == Operation.BossReborn
-                || type == Operation.ConsumeRebate || type == Operation.GiftPackage
-                || type == Operation.MultipRealmPoint)
-                && state == 0)
+            if (openServerActivityStateChange != null)
             {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
-            }
-            if ((type == Operation.MultipleExp)
-                && state == 1)
-            {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
-            }
-        }
-
-        private void OperationStartEvent(Operation type, int state)
-        {
-            if ((type == Operation.FlashSale || type == Operation.BossReborn
-                || type == Operation.ConsumeRebate || type == Operation.GiftPackage
-                || type == Operation.MultipRealmPoint)
-                && state == 0)
-            {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
-            }
-            if ((type == Operation.MultipleExp)
-                && state == 1)
-            {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
-            }
-        }
-
-        private void OnFuncStateChangeEvent(int _id)
-        {
-            if (_id == 125 || _id == (int)FuncOpenEnum.OpenServerRedEnvelope
-                || _id == 132)
-            {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
+                openServerActivityStateChange();
             }
         }
 
@@ -725,95 +686,47 @@
         public bool IsAnyActivityOpen(out int _functionOrder)
         {
             _functionOrder = 0;
-            if (IsImpactRankOpen())
+            foreach (var _order in openServerActivitys.Keys)
             {
-                _functionOrder = 0;
-                return true;
-            }
-            if (IsConsumeRebateOpen())
-            {
-                _functionOrder = 1;
-                return true;
-            }
-            if (IsRedEnvelopeOpen())
-            {
-                _functionOrder = 2;
-                return true;
-            }
-            if (IsTimeLimitGiftOpen())
-            {
-                _functionOrder = 3;
-                return true;
-            }
-            if (IsFlashSaleOpen())
-            {
-                _functionOrder = 4;
-                return true;
-            }
-            if (IsMultipleExpOpen())
-            {
-                _functionOrder = 5;
-                return true;
-            }
-            if (IsMultipleRealmOpen())
-            {
-                _functionOrder = 8;
-                return true;
-            }
-
-            if (IsBossRebornOpen())
-            {
-                _functionOrder = 9;
-                return true;
+                if (openServerActivitys[_order].IsOpen)
+                {
+                    _functionOrder = _order;
+                    return true;
+                }
             }
             return false;
         }
 
-        public bool IsImpactRankOpen()
+        public bool IsActivityOpen(int _funcOrder)
         {
-            return TimeUtility.OpenDay < impactRankModel.openServerActivityDays && FuncOpen.Instance.IsFuncOpen(125);
+            if (openServerActivitys.ContainsKey(_funcOrder))
+            {
+                return openServerActivitys[_funcOrder].IsOpen;
+            }
+            return false;
         }
 
-        public bool IsRedEnvelopeOpen()
+        public bool IsPriorityOpenOpen(int _funcOrder)
         {
-            return TimeUtility.OpenDay < envelopeModel.openDays && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.OpenServerRedEnvelope);
-        }
-
-        public bool IsTimeLimitGiftOpen()
-        {
-            return TimeUtility.CreateDays <= timeLimitGiftModel.openDays && FuncOpen.Instance.IsFuncOpen(132);
-        }
-
-        public bool IsFlashSaleOpen()
-        {
-            return flashSaleModel.IsOpen || flashSaleModel.InAdvanceOpen;
-        }
-
-        public bool IsConsumeRebateOpen()
-        {
-            return consumeRebateModel.IsOpen;
-        }
-
-        public bool IsMultipleExpOpen()
-        {
-            return multipleExpModel.Open();
-        }
-
-        public bool IsMultipleRealmOpen()
-        {
-            return multipleRealmModel.IsOpen;
+            if (openServerActivitys.ContainsKey(_funcOrder))
+            {
+                return openServerActivitys[_funcOrder].priorityOpen;
+            }
+            return false;
         }
 
         public void ProcessErrorTip()
         {
             SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
         }
+    }
 
-        public bool IsBossRebornOpen()
-        {
-            return bossRebornModel.IsOpen();
-        }
+    public interface IOpenServerActivity
+    {
+        bool IsOpen { get; }
+        bool priorityOpen { get; }
 
+        event Action<int> onStateUpate;
     }
 }
 

--
Gitblit v1.8.0