From b04fc4bee9584af8ea0457aafe4cf1b6c19b36d2 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 01 三月 2019 16:36:10 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Skill/TreasureSkillWin.cs |  109 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 97 insertions(+), 12 deletions(-)

diff --git a/System/Skill/TreasureSkillWin.cs b/System/Skill/TreasureSkillWin.cs
index f7c83b0..7cf1c7f 100644
--- a/System/Skill/TreasureSkillWin.cs
+++ b/System/Skill/TreasureSkillWin.cs
@@ -28,12 +28,20 @@
         [SerializeField] Button m_GetWay;
         [SerializeField] Button m_LevelUp;
         [SerializeField] RedpointBehaviour m_LevelRedpoint;
+        [SerializeField] UIEffect m_LevelUpEffect;
         [SerializeField] Transform m_ContainerMax;
         [SerializeField] TreasurePotentialBehaviour[] m_TreasurePotentials;
+
+        List<Clock> clocks = new List<Clock>();
 
         TreasureSkillModel model
         {
             get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); }
+        }
+
+        PackModel packModel
+        {
+            get { return ModelCenter.Instance.GetModel<PackModel>(); }
         }
 
         #region Built-in
@@ -56,6 +64,7 @@
             model.treasureSkillRefresh += TreasureSkillRefresh;
             model.selectRefresh += SelectRefresh;
             model.skillLevelUpRefresh += SkillLevelUpRefresh;
+            packModel.refreshItemCountEvent += RefreshItemCountEvent;
         }
 
         protected override void OnAfterOpen()
@@ -67,7 +76,18 @@
             model.treasureSkillRefresh -= TreasureSkillRefresh;
             model.selectRefresh -= SelectRefresh;
             model.skillLevelUpRefresh -= SkillLevelUpRefresh;
+            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
             model.SetAlreadyRemind();
+
+            for (int i = 0; i < m_TreasurePotentials.Length; i++)
+            {
+                m_TreasurePotentials[i].StopUnlock();
+            }
+            foreach (var clock in clocks)
+            {
+                clock.Stop();
+            }
+            clocks.Clear();
         }
 
         protected override void OnAfterClose()
@@ -108,6 +128,7 @@
         {
             DisplaySkills();
             DisplaySkillDetial();
+            DisplayPotentials();
         }
 
         private void DisplaySkills()
@@ -156,19 +177,28 @@
                         WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.Daily_EmperorRelic);
                     });
                 }
+            }
+        }
 
-                for (int i = 0; i < m_TreasurePotentials.Length; i++)
-                {
-                    if (i < skill.potentials.Count)
-                    {
-                        m_TreasurePotentials[i].gameObject.SetActive(true);
-                        m_TreasurePotentials[i].Display(skill.potentials[i].id);
-                    }
-                    else
-                    {
-                        m_TreasurePotentials[i].gameObject.SetActive(false);
-                    }
-                }
+        private void DisplayPotentials()
+        {
+            for (int i = 0; i < m_TreasurePotentials.Length; i++)
+            {
+                DisplayPotential(i);
+            }
+        }
+
+        private void DisplayPotential(int index)
+        {
+            TreasureSkill skill;
+            if (!model.TryGetSkill(model.selectSkill, out skill))
+            {
+                return;
+            }
+            if (index < m_TreasurePotentials.Length)
+            {
+                m_TreasurePotentials[index].gameObject.SetActive(index < skill.potentials.Count);
+                m_TreasurePotentials[index].Display(skill.potentials[index].id);
             }
         }
 
@@ -204,8 +234,18 @@
 
         private void SelectRefresh()
         {
+            for (int i = 0; i < m_TreasurePotentials.Length; i++)
+            {
+                m_TreasurePotentials[i].StopUnlock();
+            }
+            foreach (var clock in clocks)
+            {
+                clock.Stop();
+            }
+            clocks.Clear();
             m_Controller.m_Scorller.RefreshActiveCellViews();
             DisplaySkillDetial();
+            DisplayPotentials();
         }
 
         private void SkillLevelUpRefresh(int id)
@@ -214,6 +254,51 @@
             {
                 m_Controller.m_Scorller.RefreshActiveCellViews();
                 DisplaySkillDetial();
+
+                m_LevelUpEffect.Play();
+
+                TreasureSkill skill;
+                if (model.TryGetSkill(model.selectSkill, out skill))
+                {
+                    for (int i = 0; i < skill.potentials.Count; i++)
+                    {
+                        var index = i;
+                        if (index < m_TreasurePotentials.Length &&
+                            skill.potentials[index].openLevel == skill.level)
+                        {
+                            m_TreasurePotentials[index].StartUnlock();
+                            Clock clock = null;
+                            clock = Clock.Create(1, () =>
+                              {
+                                  DisplayPotential(index);
+                                  if (clock != null && clocks.Contains(clock))
+                                  {
+                                      clocks.Remove(clock);
+                                  }
+                              });
+                            clocks.Add(clock);
+                        }
+                    }
+                }
+            }
+            else
+            {
+                var skillId = 0;
+                if (model.ContainsSkill(id, out skillId))
+                {
+                    if (skillId == model.selectSkill)
+                    {
+                        DisplayPotentials();
+                    }
+                }
+            }
+        }
+
+        private void RefreshItemCountEvent(PackType packType, int arg2, int itemId)
+        {
+            if (packType == PackType.Item && model.skillLevelUpItems.Contains(itemId))
+            {
+                DisplaySkillDetial();
             }
         }
     }

--
Gitblit v1.8.0