From 83f2f92d2d40f03f565a2b2ccf8ab1b0fa3b9306 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 14 八月 2018 16:40:43 +0800
Subject: [PATCH] 暂时提交精彩活动修改

---
 System/OpenServerActivity/ImpactRankModel.cs |  170 ++++++++++++++++++++++----------------------------------
 1 files changed, 68 insertions(+), 102 deletions(-)

diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index 227c8ed..3ceb88a 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)
         {
@@ -619,59 +626,65 @@
 
         #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 OnStateUpate(int _order)
+        {
+            if (openServerActivityStateChange != null)
+            {
+                openServerActivityStateChange();
             }
         }
 
         private void OperationEndEvent(Operation type, int state)
         {
-            if ((type == Operation.FlashSale || type == Operation.BossReborn
-                || type == Operation.ConsumeRebate || type == Operation.GiftPackage
+            if ((type == Operation.BossReborn|| type == Operation.GiftPackage
                 || type == Operation.MultipRealmPoint)
                 && state == 0)
-            {
-                if (openServerActivityStateChange != null)
-                {
-                    openServerActivityStateChange();
-                }
-            }
-            if ((type == Operation.MultipleExp)
-                && state == 1)
             {
                 if (openServerActivityStateChange != null)
                 {
@@ -682,30 +695,9 @@
 
         private void OperationStartEvent(Operation type, int state)
         {
-            if ((type == Operation.FlashSale || type == Operation.BossReborn
-                || type == Operation.ConsumeRebate || type == Operation.GiftPackage
+            if ((type == Operation.BossReborn|| 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)
                 {
@@ -725,35 +717,13 @@
         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 (openServerActivitys[_order].IsOpen)
+                {
+                    _functionOrder = _order;
+                    return true;
+                }
             }
             if (IsMultipleRealmOpen())
             {
@@ -769,34 +739,22 @@
             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();
+            if (openServerActivitys.ContainsKey(_funcOrder))
+            {
+                return openServerActivitys[_funcOrder].priorityOpen;
+            }
+            return false;
         }
 
         public bool IsMultipleRealmOpen()
@@ -811,9 +769,17 @@
 
         public bool IsBossRebornOpen()
         {
-            return bossRebornModel.IsOpen();
+            return bossRebornModel.IsOpen;
         }
 
     }
+
+    public interface IOpenServerActivity
+    {
+        bool IsOpen { get; }
+        bool priorityOpen { get; }
+
+        event Action<int> onStateUpate;
+    }
 }
 

--
Gitblit v1.8.0