少年修仙传客户端代码仓库
client_linchunjie
2019-01-29 bb98d8ae9ff4d799bd8e2c11ddf3335ab4e0b017
System/OpenServerActivity/FestivalRedpackModel.cs
@@ -14,6 +14,8 @@
        bool serverInited = false;
        public List<int> systemDisplayRedpacks = new List<int>();
        public List<FestivalRedpackAchievement> displayAchievements = new List<FestivalRedpackAchievement>();
        public List<int> taskDisplayRedpacks = new List<int>();
        int m_SelectType;
        public int selectType
@@ -51,6 +53,9 @@
        public int jumpType { get; set; }
        public bool autoOpen { get; set; }
        public bool IsOpen
        {
            get
@@ -82,6 +87,10 @@
        public int grabTotalJade { get; private set; }
        public float redpackVoiceInterval { get; private set; }
        DateTime voicePlayTime = DateTime.Now;
        public const int FESTIVALTASKREDPACKTYPE = 33;
        public const int FESTIVALSYSTEMREDPACK1 = 31;
        public const int FESTIVALSYSTEMREDPACK2 = 32;
@@ -99,6 +108,7 @@
        public event Action selectTypeRefresh;
        public event Action selectDateIndexRefresh;
        public event Action<int> achievementRefresh;
        public event Action taskRedpackRefresh;
        RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } }
        AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
@@ -110,7 +120,6 @@
            OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
            envelopeModel.EnvelopeUpdateEvent += EnvelopeUpdateEvent;
            envelopeModel.EnvelopeDelEvent += EnvelopeDelEvent;
            envelopeModel.EnvelopeGetEvent += EnvelopeGetEvent;
            achievementModel.achievementCompletedEvent += AchievementCompletedEvent;
            achievementModel.achievementProgressUpdateEvent += AchievementProgressUpdateEvent;
            ParseConfig();
@@ -137,7 +146,6 @@
            OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
            envelopeModel.EnvelopeUpdateEvent -= EnvelopeUpdateEvent;
            envelopeModel.EnvelopeDelEvent -= EnvelopeDelEvent;
            envelopeModel.EnvelopeGetEvent -= EnvelopeGetEvent;
            achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
            achievementModel.achievementProgressUpdateEvent -= AchievementProgressUpdateEvent;
        }
@@ -179,6 +187,14 @@
                        });
                    }
                }
            }
            {
                var config = Config.Instance.Get<FuncConfigConfig>("FeastRedPacket");
                grabRedpackLimitTimes = int.Parse(config.Numerical1);
                config = Config.Instance.Get<FuncConfigConfig>("RedEnvelopeVoiceCd");
                redpackVoiceInterval = float.Parse(config.Numerical1) / 1000;
            }
        }
@@ -260,7 +276,7 @@
            return festivalRedpacks.TryGetValue(id, out redpack);
        }
        public bool TryGetAchievements(out List<FestivalRedpackAchievement> list)
        public bool TryGetAchievements(int index, out List<FestivalRedpackAchievement> list)
        {
            return achievements.TryGetValue(festivalDay + 1, out list);
        }
@@ -294,6 +310,22 @@
                }
            }
            return lhs.id.CompareTo(rhs.id);
        }
        public int CompareEnvelope(int x, int y)
        {
            RedEnvelopeModel.RedEnvelope xEnvelope;
            RedEnvelopeModel.RedEnvelope yEnvelope;
            if (envelopeModel.TryGetEnvelope(x, out xEnvelope)
                && envelopeModel.TryGetEnvelope(y, out yEnvelope))
            {
                if (xEnvelope.state.CompareTo(yEnvelope.state) != 0)
                {
                    return xEnvelope.state.CompareTo(yEnvelope.state);
                }
                return -xEnvelope.time.CompareTo(yEnvelope.time);
            }
            return -x.CompareTo(y);
        }
        public void OnReceivePackage(HAB25_tagMCFeastRedPackInfo package)
@@ -345,23 +377,74 @@
        private void EnvelopeUpdateEvent()
        {
            bool rewardable = receiveRedpoint.state == RedPointState.GetReward;
            UpdateRedpoint();
            if (taskRedpackRefresh != null)
            {
                taskRedpackRefresh();
            }
            if (!rewardable && receiveRedpoint.state == RedPointState.GetReward
                && serverInited && !ExistSelfTaskRedpack())
            {
                PlayRedpackVoice();
            }
        }
        public bool ExistSelfTaskRedpack()
        {
            List<int> list;
            if (envelopeModel.TryGetEnvelopes(FESTIVALTASKREDPACKTYPE, out list))
            {
                foreach (var id in list)
                {
                    RedEnvelopeModel.RedEnvelope envelope;
                    if (envelopeModel.TryGetEnvelope(id, out envelope))
                    {
                        if (envelope.player == PlayerDatas.Instance.PlayerId
                            && envelope.state == 1)
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        public void JudgePlayRedpackVoice(int type)
        {
            if (type == FESTIVALSYSTEMREDPACK1
                || type == FESTIVALSYSTEMREDPACK2)
            {
                PlayRedpackVoice();
            }
        }
        void PlayRedpackVoice()
        {
            if ((DateTime.Now - voicePlayTime).TotalSeconds < redpackVoiceInterval)
            {
                return;
            }
            SoundPlayer.Instance.PlayUIAudio(632);
            voicePlayTime = DateTime.Now;
        }
        private void EnvelopeDelEvent()
        {
            UpdateRedpoint();
        }
        private void EnvelopeGetEvent(int id)
        {
            if (taskRedpackRefresh != null)
            {
                taskRedpackRefresh();
            }
        }
        private void AchievementCompletedEvent(int _achieve)
        {
            List<FestivalRedpackAchievement> list;
            if (TryGetAchievements(out list) && IsContainsAchievement(list, _achieve))
            if (TryGetAchievements(festivalDay + 1, out list) && IsContainsAchievement(list, _achieve))
            {
                if (achievementRefresh != null)
                {
@@ -374,7 +457,7 @@
        private void AchievementProgressUpdateEvent(int _achieve)
        {
            List<FestivalRedpackAchievement> list;
            if (TryGetAchievements(out list) && IsContainsAchievement(list, _achieve))
            if (TryGetAchievements(festivalDay + 1, out list) && IsContainsAchievement(list, _achieve))
            {
                if (achievementRefresh != null)
                {
@@ -420,7 +503,7 @@
                }
                List<FestivalRedpackAchievement> list;
                if (TryGetAchievements(out list))
                if (TryGetAchievements(festivalDay + 1, out list))
                {
                    foreach (var festivalRedpackAchievement in list)
                    {
@@ -461,9 +544,9 @@
                    }
                }
            }
            systemRedpoint.state = existSystemRedpack ? RedPointState.Simple : RedPointState.None;
            systemRedpoint.state = existSystemRedpack ? RedPointState.GetReward : RedPointState.None;
            taskRedpoint.state = existFinishTask ? RedPointState.Simple : RedPointState.None;
            receiveRedpoint.state = existUnGetRedpack ? RedPointState.Simple : RedPointState.None;
            receiveRedpoint.state = existUnGetRedpack ? RedPointState.GetReward : RedPointState.None;
        }
    }