少年修仙传客户端代码仓库
client_linchunjie
2018-08-23 d0253a072ba69280985216f513aeb380f3f3822c
2788【前端】被动技能槽解锁界面表现
2个文件已修改
155 ■■■■■ 已修改文件
System/Skill/SkillModel.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillPassWin.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/SkillModel.cs
@@ -14,11 +14,13 @@
        {
            ParseConfig();
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            PlayerTaskDatas.Event_TaskInformation += TaskInformationUpdate;
        }
        public override void UnInit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            PlayerTaskDatas.Event_TaskInformation -= TaskInformationUpdate;
        }
        public void OnBeforePlayerDataInitialize()
@@ -27,6 +29,7 @@
            equipPassSkills.Clear();
            playerLoginOk = false;
            equipPassPage = false;
            taskHoleCondition = 0;
        }
        #region 配置
@@ -70,6 +73,7 @@
                    passSkillLimits.Add(limit);
                }
                passEquipCnt = int.Parse(funcCfg.Numerical2);
                taskHoleDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical4);
            }
            funcCfg = Config.Instance.Get<FuncConfigConfig>("PassSkillEquipGetWay");
            if (funcCfg != null)
@@ -212,6 +216,7 @@
        public int presentEquipPage { get; private set; }
        public bool playerLoginOk = false;
        private Dictionary<int, Dictionary<int, int>> equipPassSkills = new Dictionary<int, Dictionary<int, int>>();
        public Dictionary<int, int> taskHoleDict { get; private set; }
        public event Action UpdatePassEquipSkillEvent;
        public bool equipPassPage { get; set; }
        public bool TryGetEquipPassSkills(int page, int hole, out int _skillId)
@@ -283,6 +288,52 @@
            }
        }
        public event Action taskUnlockUpdate;
        public int taskHoleCondition { get; private set; }
        public const string TASKHOLEKEY = "OpenSkillSlots";
        public int UnlockPassHole
        {
            get { return LocalSave.GetInt(StringUtility.Contact(TASKHOLEKEY, "_", PlayerDatas.Instance.baseData.PlayerID)); }
            set { LocalSave.SetInt(StringUtility.Contact(TASKHOLEKEY, "_", PlayerDatas.Instance.baseData.PlayerID), value); }
        }
        public bool IsTaskHoleUnlock(int condition)
        {
            if (task._DicTaskInformation.ContainsKey(1)
                && task._DicTaskInformation[1].ContainsKey(TASKHOLEKEY))
            {
                var value = 0;
                int.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
                return value >= condition;
            }
            return false;
        }
        private void TaskInformationUpdate(int _id, Dictionary<int, Dictionary<string, string>> _Dic)
        {
            if (_Dic != null && _Dic.ContainsKey(1))
            {
                var dict = _Dic[1];
                if (dict.ContainsKey(TASKHOLEKEY))
                {
                    var result = 0;
                    int.TryParse(dict[TASKHOLEKEY], out result);
                    if (result != taskHoleCondition && playerLoginOk)
                    {
                        UnlockPassHole = result;
                        if (taskUnlockUpdate != null)
                        {
                            taskUnlockUpdate();
                        }
                    }
                    taskHoleCondition = result;
                }
            }
        }
        RolePromoteModel m_PromoteModel;
        RolePromoteModel promoteModel
        {
@@ -291,6 +342,8 @@
                return m_PromoteModel ?? (m_PromoteModel = ModelCenter.Instance.GetModel<RolePromoteModel>());
            }
        }
        PlayerTaskDatas task { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        public void SendEquipPassSkill(int _page, int _index, int _skillId)
        {
@@ -335,6 +388,13 @@
                else if (limit.MountLv > 0)
                {
                    if (promoteModel.GetMountTotallv() < limit.MountLv)
                    {
                        return false;
                    }
                }
                else if (limit.OpenSkillSlots > 0)
                {
                    if (!IsTaskHoleUnlock(limit.OpenSkillSlots))
                    {
                        return false;
                    }
@@ -584,6 +644,7 @@
        public int level;
        public int vipLv;
        public int MountLv;
        public int OpenSkillSlots;
    }
    [Serializable]
System/Skill/SkillPassWin.cs
@@ -25,6 +25,7 @@
        [SerializeField] Button m_LeftBtn;
        [SerializeField] Button m_RightBtn;
        [SerializeField] List<SkillCell> equipPassSkills = new List<SkillCell>();
        [SerializeField] List<UIEffect> equipPassEffects = new List<UIEffect>();
        [SerializeField] Image m_DragImg;
        [SerializeField] Image m_DragSkillImg;
        [SerializeField] List<Button> m_PageBtns = new List<Button>();
@@ -36,6 +37,7 @@
        [SerializeField] ClickScreenOtherSpace clickOtherSpace;
        private List<SkillConfig> skillListPass = new List<SkillConfig>();
        private int presentSltEquipIndex = -1;
        Coroutine cacheCoroutine = null;
        SkillModel m_Model;
        SkillModel model
        {
@@ -44,6 +46,8 @@
                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<SkillModel>());
            }
        }
        PlayerTaskDatas task { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        RolePromoteModel m_PromoteModel;
        RolePromoteModel promoteModel
@@ -119,6 +123,13 @@
            UpdateEquipPassSkill();
            SetEquipHoleSelect(GetEquipHoleIndex(model.presentSltSkillID));
            DayRemind.Instance.SetDayRemind(DayRemind.PASS_SKILL_REDPOINT, true);
            model.taskUnlockUpdate += TaskUnlockUpdate;
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
        }
        protected override void OnActived()
@@ -129,6 +140,7 @@
        protected override void OnAfterOpen()
        {
            DisplayEffect();
        }
        protected override void OnPreClose()
@@ -138,12 +150,52 @@
            model.OnRefreshSltSkill -= OnRefreshSltSkill;
            model.UpdatePassEquipSkillEvent -= UpdatePassEquipSkillEvent;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= OnRefreshPlayerInfo;
            model.taskUnlockUpdate -= TaskUnlockUpdate;
            model.SetDayRemind();
            model.UnlockPassHole = 0;
        }
        protected override void OnAfterClose()
        {
            model.SendEquipPage();
        }
        private void TaskUnlockUpdate()
        {
            DisplayEffect();
        }
        void DisplayEffect()
        {
            if (model.UnlockPassHole != 0)
            {
                var index = 0;
                for (int i = 0; i < equipPassSkills.Count; i++)
                {
                    PassSkillLimit limit;
                    if (model.TryGetPassSkillLimit(i, out limit))
                    {
                        if (limit.OpenSkillSlots != 0 && limit.OpenSkillSlots == model.UnlockPassHole)
                        {
                            index = i;
                            break;
                        }
                    }
                }
                model.UnlockPassHole = 0;
                if (index >= 0 && index < equipPassEffects.Count)
                {
                    equipPassEffects[index].Play();
                    cacheCoroutine = StartCoroutine(Co_UnlockEffectComplete());
                }
            }
        }
        IEnumerator Co_UnlockEffectComplete()
        {
            yield return WaitingForSecondConst.WaitMS800;
            SysNotifyMgr.Instance.ShowTip("PassNewHole");
            UpdateEquipPassSkill();
        }
        protected override void LateUpdate()
@@ -201,6 +253,10 @@
                    return true;
                }
                else if (_limit.MountLv > 0 && promoteModel.GetMountTotallv() < _limit.MountLv)
                {
                    return true;
                }
                else if (_limit.OpenSkillSlots > 0 && !model.IsTaskHoleUnlock(_limit.OpenSkillSlots))
                {
                    return true;
                }
@@ -347,6 +403,26 @@
                            continue;
                        }
                    }
                    else if (limit.OpenSkillSlots > 0)
                    {
                        if (!model.IsTaskHoleUnlock(limit.OpenSkillSlots) || model.UnlockPassHole == limit.OpenSkillSlots)
                        {
                            SetEquipSkillDeActive(i);
                            equipPassSkills[i].skillData.m_SkillNameTxt.color = equipHoleLimitColor;
                            var taskName = string.Empty;
                            if (model.taskHoleDict.ContainsKey(limit.OpenSkillSlots))
                            {
                                var taskConfig = Config.Instance.Get<PyTaskConfig>(model.taskHoleDict[limit.OpenSkillSlots]);
                                if (taskConfig != null)
                                {
                                    var taskInfoConfig = Config.Instance.Get<TASKINFOConfig>(taskConfig.name);
                                    taskName = taskInfoConfig == null ? string.Empty : taskInfoConfig.show_writing;
                                }
                            }
                            equipPassSkills[i].skillData.m_SkillNameTxt.text = Language.Get("PassSkillHoleLimitTask", taskName);
                            continue;
                        }
                    }
                }
                int _skillId = 0;
                equipPassSkills[i].skillData.m_SkillNameTxt.text = string.Empty;
@@ -441,6 +517,24 @@
                        m_GetWayBtn.gameObject.SetActive(true);
                    }
                }
                else if (limit.OpenSkillSlots > 0)
                {
                    if (!model.IsTaskHoleUnlock(limit.OpenSkillSlots))
                    {
                        var taskName = string.Empty;
                        if (model.taskHoleDict.ContainsKey(limit.OpenSkillSlots))
                        {
                            var taskConfig = Config.Instance.Get<PyTaskConfig>(model.taskHoleDict[limit.OpenSkillSlots]);
                            if (taskConfig != null)
                            {
                                var taskInfoConfig = Config.Instance.Get<TASKINFOConfig>(taskConfig.name);
                                taskName = taskInfoConfig == null ? string.Empty : taskInfoConfig.show_writing;
                            }
                        }
                        SysNotifyMgr.Instance.ShowTip("PassEquipLimitTask", taskName);
                        m_GetWayBtn.gameObject.SetActive(true);
                    }
                }
            }
        }