少年修仙传客户端代码仓库
client_linchunjie
2018-08-14 83f2f92d2d40f03f565a2b2ccf8ab1b0fa3b9306
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;
    }
}