From d8d333db7753a02dbbbdbf5d070bff129725d9cc Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 23 八月 2018 19:49:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Skill/SkillPassWin.cs |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/System/Skill/SkillPassWin.cs b/System/Skill/SkillPassWin.cs
index c112378..cdcf016 100644
--- a/System/Skill/SkillPassWin.cs
+++ b/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()
@@ -203,6 +255,10 @@
                 else if (_limit.MountLv > 0 && promoteModel.GetMountTotallv() < _limit.MountLv)
                 {
                     return true;
+                }
+                else if (_limit.OpenSkillSlots > 0 && !model.IsTaskHoleUnlock(_limit.OpenSkillSlots))
+                {
+                    return false;
                 }
             }
             return false;
@@ -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(false);
+                    }
+                }
             }
         }
 

--
Gitblit v1.8.0