From d5069f791aa640ace3fa8fdae1b2da40626d712d Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期五, 17 八月 2018 18:08:21 +0800
Subject: [PATCH] 法宝魂修改

---
 System/Treasure/TreasureData.cs                      |    5 
 System/Treasure/TreasureNewGotBehaviour.cs           |   80 ++++++++++
 System/Treasure/TreasureUnlockCell.cs                |   16 +
 System/Treasure/FairyTreasureCollectPanelPattern5.cs |    6 
 System/Treasure/TreasureNewGotBehaviour.cs.meta      |   12 +
 System/Treasure/TreasureStageTipWin.cs               |   19 -
 System/Treasure/TreasureLevelUpWin.cs                |  106 ++----------
 System/Treasure/TreasureMeridianBehaviour.cs         |    9 
 System/Treasure/TreasureNewGotWin.cs                 |  194 ++++++-----------------
 9 files changed, 199 insertions(+), 248 deletions(-)

diff --git a/System/Treasure/FairyTreasureCollectPanelPattern5.cs b/System/Treasure/FairyTreasureCollectPanelPattern5.cs
index f018d70..9d51b47 100644
--- a/System/Treasure/FairyTreasureCollectPanelPattern5.cs
+++ b/System/Treasure/FairyTreasureCollectPanelPattern5.cs
@@ -347,7 +347,11 @@
         private void DisplayFunc()
         {
             m_FuncTitle.text = treasure.state == TreasureState.Collected ? Language.Get("FairyTreasureOpenFunc") : Language.Get("FairyTreasureUnOpenFunc");
-            var config = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(treasure.unLockFunc);
+            var funcStage = treasure.treasureStages.Find((x) =>
+            {
+                return x.unlockType == TreasureStageUnlock.Func;
+            });
+            var config = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(funcStage.func);
             if (config != null)
             {
                 m_FuncIcon.SetSprite(config.Icon);
diff --git a/System/Treasure/TreasureData.cs b/System/Treasure/TreasureData.cs
index 676b1ee..5eb5636 100644
--- a/System/Treasure/TreasureData.cs
+++ b/System/Treasure/TreasureData.cs
@@ -78,11 +78,6 @@
             }
         }
 
-        public int unLockFunc
-        {
-            get; private set;
-        }
-
         public int unLockPrivilege
         {
             get; private set;
diff --git a/System/Treasure/TreasureLevelUpWin.cs b/System/Treasure/TreasureLevelUpWin.cs
index ec177b4..a3026fe 100644
--- a/System/Treasure/TreasureLevelUpWin.cs
+++ b/System/Treasure/TreasureLevelUpWin.cs
@@ -23,13 +23,8 @@
         [SerializeField] RectTransform m_ContainerUnGet;
         [SerializeField] RectTransform m_ContainerLockDetail;
         [SerializeField] PositionTween m_LockDetailPosTween;
+        [SerializeField] ScrollerController m_Controller;
         [SerializeField] Button m_GetTreasureBtn;
-        [SerializeField] RectTransform m_ContainerLockFunc;
-        [SerializeField] RectTransform m_ContainerLockSkill;
-        [SerializeField] RectTransform m_ContainerLockPrivilege;
-        [SerializeField] Button m_PrivilegeLockBtn;
-        [SerializeField] Button m_FuncLockBtn;
-        [SerializeField] Button m_SkillLockBtn;
         [SerializeField] RectTransform m_ContainerLimit;
         [SerializeField] Text m_TreasureChallengeLimit;
         [SerializeField] Text m_TreasureStory;
@@ -124,11 +119,9 @@
             m_BackBtn.onClick.AddListener(OnBack);
             m_GetTreasureBtn.onClick.AddListener(OnGetTreasure);
             m_LevelUpBtn.onClick.AddListener(OnLevelUp);
-            m_PrivilegeLockBtn.onClick.AddListener(OnStagePrivilegeClick);
-            m_FuncLockBtn.onClick.AddListener(OnStageFuncClick);
-            m_SkillLockBtn.onClick.AddListener(OnStageSkillClick);
             m_LeftBtn.onClick.AddListener(OnLeftBtn);
             m_RightBtn.onClick.AddListener(OnRightBtn);
+            m_Controller.OnRefreshCell += OnRefreshCell;
         }
 
         protected override void OnPreOpen()
@@ -244,6 +237,12 @@
         {
         }
         #endregion
+
+        private void OnRefreshCell(ScrollerDataType type, CellView cell)
+        {
+            TreasureUnlockCell treasureUnlockCell = cell as TreasureUnlockCell;
+            treasureUnlockCell.Display(model.selectedTreasure, cell.index);
+        }
 
         private void TreasureStateChangeEvent(int _id)
         {
@@ -448,34 +447,22 @@
         private void UpdateTreasureUnlockDetail()
         {
             var _cfg = ConfigManager.Instance.GetTemplate<TreasureConfig>(model.selectedTreasure);
-            var _funcCfg = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(m_Treasure.unLockFunc);
             m_TreasureStory.text = _cfg.Story;
-            m_ContainerLockFunc.gameObject.SetActive(_funcCfg != null);
-            if (_funcCfg != null)
+
+            m_Controller.Refresh();
+            for (int i = 0; i < m_Treasure.treasureStages.Count; i++)
             {
-                m_FuncLockBtn.image.SetSprite(_funcCfg.Icon);
-            }
-            var _skillCfg = ConfigManager.Instance.GetTemplate<SkillConfig>(m_Treasure.unLockSkill);
-            m_ContainerLockSkill.gameObject.SetActive(_skillCfg != null);
-            if (_skillCfg != null)
-            {
-                m_SkillLockBtn.image.SetSprite(_skillCfg.IconName);
-            }
-            var _privilegeCfg = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(m_Treasure.unLockPrivilege);
-            m_ContainerLockPrivilege.gameObject.SetActive(_privilegeCfg != null);
-            if (_privilegeCfg != null)
-            {
-                var privilegeStage = m_Treasure.treasureStages[m_Treasure.StageCount - 1];
-                if (FuncOpen.Instance.IsFuncOpen(126))
+                var stage = m_Treasure.treasureStages[i];
+                switch (stage.unlockType)
                 {
-                    m_PrivilegeLockBtn.image.SetSprite(_privilegeCfg.Icon);
+                    case TreasureStageUnlock.Skill:
+                    case TreasureStageUnlock.Func:
+                    case TreasureStageUnlock.Treasure:
+                        m_Controller.AddCell(ScrollerDataType.Header, stage.stage);
+                        break;
                 }
-                else
-                {
-                    m_PrivilegeLockBtn.image.SetSprite("UnKnowIcon");
-                }
-                m_PrivilegeLockBtn.image.SetNativeSize();
             }
+            m_Controller.Restart();
 
             Achievement achievement = null;
             int _achievementId = 0;
@@ -508,59 +495,6 @@
                         break;
                 }
             }
-        }
-
-        private void OnStageSkillClick()
-        {
-            if (model.treasureStepUpShow)
-            {
-                return;
-            }
-            var _stage = m_Treasure.treasureStages.Find((x) =>
-            {
-                return x.unlockType == TreasureStageUnlock.Skill;
-            });
-            if (_stage != null)
-            {
-                OpenTreasureStageTip(_stage.stage,m_SkillLockBtn.transform as RectTransform);
-            }
-        }
-
-        private void OnStageFuncClick()
-        {
-            if (model.treasureStepUpShow)
-            {
-                return;
-            }
-            var _stage = m_Treasure.treasureStages.Find((x) =>
-            {
-                return x.unlockType == TreasureStageUnlock.Func;
-            });
-            if (_stage != null)
-            {
-                OpenTreasureStageTip(_stage.stage,m_FuncLockBtn.transform as RectTransform);
-            }
-        }
-
-        private void OnStagePrivilegeClick()
-        {
-            if (model.treasureStepUpShow)
-            {
-                return;
-            }
-            if (!FuncOpen.Instance.IsFuncOpen(126))
-            {
-                FuncOpen.Instance.ProcessorFuncErrorTip(126);
-                return;
-            }
-            //var _stage = m_Treasure.treasureStages.Find((x) =>
-            //{
-            //    return x.unlockType == TreasureStageUnlock.Privilege;
-            //});
-            //if (_stage != null)
-            //{
-            //    OpenTreasureStageTip(_stage.stage, m_PrivilegeLockBtn.transform as RectTransform);
-            //}
         }
 
         private void OpenTreasureStageTip(int _stage, RectTransform _target)
@@ -976,7 +910,7 @@
             {
                 case TreasureStageUnlock.Func:
                     m_ContainerTip.gameObject.SetActive(true);
-                    var _funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(m_Treasure.unLockFunc);
+                    var _funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(stage.func);
                     m_NewStageTip.text = StringUtility.Contact(Language.Get("TreasureGetNewFunc"),
                         UIHelper.GetTextColorByItemColor(TextColType.Green, _funcConfig.Remark));
                     break;
diff --git a/System/Treasure/TreasureMeridianBehaviour.cs b/System/Treasure/TreasureMeridianBehaviour.cs
index 8d31a19..e6db53b 100644
--- a/System/Treasure/TreasureMeridianBehaviour.cs
+++ b/System/Treasure/TreasureMeridianBehaviour.cs
@@ -88,8 +88,7 @@
 
         private void OnStageClick()
         {
-            if (m_TreasureStage != null&& m_TreasureStage.unlockType != TreasureStageUnlock.Treasure
-                && m_TreasureStage.unlockType != TreasureStageUnlock.Property)
+            if (m_TreasureStage != null&&  m_TreasureStage.unlockType != TreasureStageUnlock.Property)
             {
                 if (m_TreasureStage.unlockType == TreasureStageUnlock.Item)
                 {
@@ -154,6 +153,7 @@
                                 m_Icon.SetSprite(GeneralConfig.Instance.propertyIconDict[_key]);
                             }
                         }
+                        m_Icon.SetNativeSize();
                         break;
                     case TreasureStageUnlock.Skill:
                         var _skillId = m_TreasureStage.GetSkill(PlayerDatas.Instance.baseData.Job);
@@ -162,6 +162,7 @@
                         m_Descs[0].color = m_Treasure.id == 104 ? UIHelper.GetUIColor(TextColType.NavyYellow) : UIHelper.s_LightYellow;
                         m_Descs[0].gameObject.SetActive(true);
                         m_Icon.SetSprite(_skillCfg.IconName);
+                        m_Icon.SetNativeSize();
                         break;
                     case TreasureStageUnlock.Func:
                         var _funcCfg = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(m_TreasureStage.func);
@@ -169,6 +170,7 @@
                         m_Descs[0].color = UIHelper.s_LightYellow;
                         m_Descs[0].gameObject.SetActive(true);
                         m_Icon.SetSprite(_funcCfg.Icon);
+                        m_Icon.SetNativeSize();
                         break;
                     case TreasureStageUnlock.Item:
                         m_Descs[0].gameObject.SetActive(true);
@@ -176,6 +178,7 @@
                         var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(m_TreasureStage.item.id);
                         m_Icon.SetSprite(itemConfig.IconKey);
                         m_Descs[0].text = itemConfig.ItemName;
+                        m_Icon.SetNativeSize();
                         break;
                     case TreasureStageUnlock.Treasure:
                         m_Descs[0].gameObject.SetActive(true);
@@ -183,9 +186,9 @@
                         var treasureConfig = ConfigManager.Instance.GetTemplate<TreasureConfig>(m_TreasureStage.treasure);
                         m_Icon.SetSprite(treasureConfig.Icon);
                         m_Descs[0].text = treasureConfig.Name;
+                        m_Icon.rectTransform.sizeDelta = new Vector2(86, 86);
                         break;
                 }
-                m_Icon.SetNativeSize();
             }
         }
 
diff --git a/System/Treasure/TreasureNewGotBehaviour.cs b/System/Treasure/TreasureNewGotBehaviour.cs
new file mode 100644
index 0000000..0566dc0
--- /dev/null
+++ b/System/Treasure/TreasureNewGotBehaviour.cs
@@ -0,0 +1,80 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class TreasureNewGotBehaviour : MonoBehaviour
+    {
+        [SerializeField] RectTransform m_ContainerFunc;
+        [SerializeField] RectTransform m_ContainerSkill;
+        [SerializeField] RectTransform m_ContaienrTreasure;
+        [SerializeField] Image m_FuncIcon;
+        [SerializeField] Image m_SkillIcon;
+        [SerializeField] Image m_TreasureIcon;
+        [SerializeField] Text m_Func;
+        [SerializeField] Text m_FuncName;
+
+        [SerializeField] UIAlphaTween alphaTween;
+
+        TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
+        public void Display(int id,int stage)
+        {
+            Treasure treasure;
+            alphaTween.SetStartState();
+            m_ContainerFunc.gameObject.SetActive(false);
+            m_ContainerSkill.gameObject.SetActive(false);
+            m_ContaienrTreasure.gameObject.SetActive(false);
+            if (model.TryGetTreasure(id, out treasure))
+            {
+                var treasureStage = treasure.treasureStages.Find((x) =>
+                {
+                    return x.stage == stage;
+                });
+                switch (treasureStage.unlockType)
+                {
+                    case TreasureStageUnlock.Skill:
+                        m_ContainerSkill.gameObject.SetActive(true);
+                        var job = PlayerDatas.Instance.baseData.Job;
+                        var skillConfig = ConfigManager.Instance.GetTemplate<SkillConfig>(treasureStage.GetSkill(job));
+                        if (skillConfig != null)
+                        {
+                            m_SkillIcon.SetSprite(skillConfig.IconName);
+                            m_Func.text = Language.Get("TreasureUnlockNewSkill");
+                            m_FuncName.text = skillConfig.SkillName;
+                        }
+                        break;
+                    case TreasureStageUnlock.Func:
+                        m_ContainerFunc.gameObject.SetActive(true);
+                        var funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(treasureStage.func);
+                        if (funcConfig != null)
+                        {
+                            m_FuncIcon.SetSprite(funcConfig.Icon);
+                            m_Func.text = Language.Get("TreasureUnlockNewFunc");
+                            m_FuncName.text = funcConfig.Remark;
+                        }
+                        break;
+                    case TreasureStageUnlock.Treasure:
+                        m_ContaienrTreasure.gameObject.SetActive(true);
+                        var treasureConfig = ConfigManager.Instance.GetTemplate<TreasureConfig>(treasureStage.treasure);
+                        if (treasureConfig != null)
+                        {
+                            m_TreasureIcon.SetSprite(treasureConfig.Icon);
+                            m_Func.text = Language.Get("TreasureUnlockNewTreasure");
+                            m_FuncName.text = treasureConfig.Name;
+                        }
+                        break;
+                }
+            }
+        }
+
+        public void Show()
+        {
+            gameObject.SetActive(true);
+            alphaTween.Play();
+        }
+    }
+}
+
diff --git a/System/Treasure/TreasureNewGotBehaviour.cs.meta b/System/Treasure/TreasureNewGotBehaviour.cs.meta
new file mode 100644
index 0000000..a69ea67
--- /dev/null
+++ b/System/Treasure/TreasureNewGotBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e242f7bb709856c4f9c2e9d8d3f705cc
+timeCreated: 1534498126
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Treasure/TreasureNewGotWin.cs b/System/Treasure/TreasureNewGotWin.cs
index 9566004..26de78c 100644
--- a/System/Treasure/TreasureNewGotWin.cs
+++ b/System/Treasure/TreasureNewGotWin.cs
@@ -39,22 +39,7 @@
         [SerializeField] RectTransform m_ContainerFuncUnLock;
         [SerializeField] Slider m_FuncUnLockSlider;
         [SerializeField] Text m_UnlockTip;
-        [SerializeField] RectTransform m_ContainerFunc;
-        [SerializeField] UIAlphaTween m_FadeInFunc;
-        [SerializeField] Image m_FuncIcon;
-        [SerializeField] Text m_FuncName;
-
-        [SerializeField] RectTransform m_ContainerSkill;
-        [SerializeField] UIAlphaTween m_FadeInSkill;
-        [SerializeField] Image m_SkillIcon;
-        [SerializeField] Text m_SKillName;
-        [SerializeField] Text m_SkillDescription;
-
-        [SerializeField] RectTransform m_ContainerSpecial;
-        [SerializeField] UIAlphaTween m_FadeInSpecial;
-        [SerializeField] Image m_SpecialIcon;
-        [SerializeField] Text m_SpecialName;
-        [SerializeField] Text m_SpecialDescription;
+        [SerializeField] TreasureNewGotBehaviour[] m_TreasureNewGots;
 
         [SerializeField] RectTransform m_ContianerStory;
         [SerializeField] UIAlphaTween m_FadeInStory;
@@ -73,6 +58,7 @@
 
         Treasure treasure;
         TreasureStage treasureStage;
+        public int displayStageCount = 0;
         public static event Action CloseTreasureNewGotWinEvent;
 
         ShowStep m_ShowStep = ShowStep.None;
@@ -99,20 +85,14 @@
                         case ShowStep.ShowNameAndSliderUnlock:
                             OnEnterShowNameAndSliderUnlock();
                             break;
-                        case ShowStep.ShowFunc:
+                        case ShowStep.ShowUnlock:
                             OnEnterShowFuncUnlock();
-                            break;
-                        case ShowStep.ShowSkill:
-                            OnEnterShowSkill();
-                            break;
-                        case ShowStep.ShowSpecialEffect:
-                            OnEnterShowSpecialEffect();
                             break;
                         case ShowStep.ShowStory:
                             OnEnterShowStory();
                             break;
-                        case ShowStep.ShowUnlock:
-                            OnEnterShowUnlock();
+                        case ShowStep.ShowComplete:
+                            OnEnterShowComplete();
                             break;
                         case ShowStep.FadeOut:
                             OnEnterFadeOut();
@@ -126,7 +106,6 @@
             }
         }
 
-        float beforeSliderTime = 0;
         #region Built-in
         protected override void BindController()
         {
@@ -147,14 +126,16 @@
             m_ContainerMask.gameObject.SetActive(false);
             m_ContainerDescription.gameObject.SetActive(false);
             m_ContainerTreasureName.gameObject.SetActive(false);
-            m_ContainerSkill.gameObject.SetActive(false);
             m_ContianerStory.gameObject.SetActive(false);
             m_ContainerFuncUnLock.gameObject.SetActive(false);
-            m_ContainerFunc.gameObject.SetActive(false);
-            m_ContainerSpecial.gameObject.SetActive(false);
             m_UnlockTip.gameObject.SetActive(false);
             m_ContainerFinishShow.gameObject.SetActive(false);
             m_ContainerFightPower.gameObject.SetActive(false);
+
+            for (int i = 0; i < m_TreasureNewGots.Length; i++)
+            {
+                m_TreasureNewGots[i].gameObject.SetActive(false);
+            }
 
             model.TryGetTreasure(model.newGotTreasureId, out treasure);
             treasureStage = treasure.treasureStages.Find((x) =>
@@ -250,54 +231,34 @@
                     }
                     break;
                 case ShowStep.ShowNameAndSliderUnlock:
-                    m_FuncUnLockSlider.value = timer / 2.8f;
+                    m_FuncUnLockSlider.value = 0;
                     if (timer > 0.7f)
                     {
-                        beforeSliderTime += 0.7f;
-                        timer = 0f;
-                        showStep = ShowStep.ShowFunc;
-                    }
-                    break;
-                case ShowStep.ShowFunc:
-                    m_FuncUnLockSlider.value = (timer + beforeSliderTime) / 2.8f;
-                    if (timer > 0.7f)
-                    {
-                        beforeSliderTime += 0.7f;
-                        timer = 0f;
-                        showStep = ShowStep.ShowSkill;
-                    }
-                    break;
-                case ShowStep.ShowSkill:
-                    m_FuncUnLockSlider.value = (timer + beforeSliderTime) / 2.8f;
-                    if (timer > 0.7f)
-                    {
-                        beforeSliderTime += 0.7f;
-                        timer = 0f;
-                        showStep = ShowStep.ShowSpecialEffect;
-                    }
-                    break;
-                case ShowStep.ShowSpecialEffect:
-                    m_FuncUnLockSlider.value = (timer + beforeSliderTime) / 2.8f;
-                    if (timer > 0.7f)
-                    {
-                        beforeSliderTime += 0.7f;
-                        timer = 0f;
-                        showStep = ShowStep.ShowUnlock;
-                    }
-                    break;
-                case ShowStep.ShowStory:
-                    if (timer > 0.7f)
-                    {
-                        beforeSliderTime = 3f;
                         timer = 0f;
                         showStep = ShowStep.ShowUnlock;
                     }
                     break;
                 case ShowStep.ShowUnlock:
-                    if (timer + beforeSliderTime <= 2.8f)
+                    m_FuncUnLockSlider.value = timer / (displayStageCount * 0.7f);
+                    if (timer > displayStageCount * 0.7f)
                     {
-                        m_FuncUnLockSlider.value = (timer + beforeSliderTime) / 2.8f;
+                        timer = 0f;
+                        showStep = ShowStep.ShowComplete;
                     }
+                    var index = (int)(timer / (displayStageCount * 0.7f) * 10);
+                    if (index < m_TreasureNewGots.Length && !m_TreasureNewGots[index].gameObject.activeSelf)
+                    {
+                        m_TreasureNewGots[index].Show();
+                    }
+                    break;
+                case ShowStep.ShowStory:
+                    if (timer > 0.7f)
+                    {
+                        timer = 0f;
+                        showStep = ShowStep.ShowComplete;
+                    }
+                    break;
+                case ShowStep.ShowComplete:
                     if (timer > 10f)
                     {
                         timer = 0f;
@@ -321,7 +282,6 @@
         {
             showStep = ShowStep.ShowModel;
             timer = 0f;
-            beforeSliderTime = 0;
 
             var config = ConfigManager.Instance.GetTemplate<TreasureConfig>(treasure.id);
             m_TreasureName.text = config.Name;
@@ -342,34 +302,27 @@
 
             var _flyObjectPoint = m_FlyObjectPoint2;
 
-            if (treasure.unLockSkill > 0)
+            var index = 0;
+            displayStageCount = 0;
+            for (int i = 0; i < m_TreasureNewGots.Length; i++)
             {
-                var skillConfig = ConfigManager.Instance.GetTemplate<SkillConfig>(treasure.unLockSkill);
-                m_SkillIcon.SetSprite(skillConfig.IconName);
-                m_SKillName.text = skillConfig.SkillName;
-                m_SkillDescription.text = skillConfig.Description;
-                m_ContainerSkill.gameObject.SetActive(true);
-                m_FadeInSkill.SetStartState();
-            }
-
-            if (treasure.unLockFunc > 0)
-            {
-                var funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(treasure.unLockFunc);
-                m_FuncIcon.SetSprite(funcConfig.Icon);
-                m_FuncName.text = funcConfig.Remark;
-                m_ContainerFunc.gameObject.SetActive(true);
-                m_FadeInFunc.SetStartState();
-                _flyObjectPoint = m_FlyObjectPoint3;
-            }
-
-            if (treasure.unLockPrivilege > 0)
-            {
-                var privilegeConfig = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(treasure.unLockPrivilege);
-                m_SpecialIcon.SetSprite(privilegeConfig.Icon);
-                m_SpecialName.text = privilegeConfig.Name;
-                m_SpecialDescription.text = privilegeConfig.Description;
-                m_ContainerSpecial.gameObject.SetActive(true);
-                m_FadeInSpecial.SetStartState();
+                TreasureStage _stage = null;
+                for (int k = index; k < treasure.treasureStages.Count; k++)
+                {
+                    index++;
+                    if (treasure.treasureStages[k].unlockType == TreasureStageUnlock.Func ||
+                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.Skill ||
+                        treasure.treasureStages[k].unlockType == TreasureStageUnlock.Treasure)
+                    {
+                        _stage = treasure.treasureStages[k];
+                        displayStageCount++;
+                        break;
+                    }
+                }
+                if (_stage != null)
+                {
+                    m_TreasureNewGots[i].Display(treasure.id, _stage.stage);
+                }
             }
 
             if (treasureStage != null && (TreasureCategory)config.Category != TreasureCategory.Fairy
@@ -423,7 +376,7 @@
 
         private void FinishShow()
         {
-            if (showStep == ShowStep.ShowUnlock)
+            if (showStep == ShowStep.ShowComplete)
             {
                 timer = 0f;
                 showStep = ShowStep.FadeOut;
@@ -482,28 +435,9 @@
                 showStep = ShowStep.ShowStory;
                 return;
             }
-            if (treasure.unLockFunc > 0)
+            if (displayStageCount == 0)
             {
-                m_FadeInFunc.SetStartState();
-                m_FadeInFunc.Play();
-            }
-            else
-            {
-                showStep = ShowStep.ShowSkill;
-            }
-        }
-
-        private void OnEnterShowSkill()
-        {
-            if (treasure.unLockSkill > 0)
-            {
-                m_ContainerSkill.gameObject.SetActive(true);
-                m_FadeInSkill.SetStartState();
-                m_FadeInSkill.Play();
-            }
-            else
-            {
-                showStep = ShowStep.ShowSpecialEffect;
+                showStep = ShowStep.ShowComplete;
             }
         }
 
@@ -516,22 +450,6 @@
             m_UnlockTip.gameObject.SetActive(true);
         }
 
-        private void OnEnterShowSpecialEffect()
-        {
-            m_ContainerSkill.gameObject.SetActive(treasure.unLockSkill > 0);
-
-            if (treasure.unLockPrivilege > 0)
-            {
-                m_ContainerSpecial.gameObject.SetActive(true);
-                m_FadeInSpecial.SetStartState();
-                m_FadeInSpecial.Play();
-            }
-            else
-            {
-                showStep = ShowStep.ShowUnlock;
-            }
-        }
-
         private void OnEnterShowStory()
         {
             m_ContianerStory.gameObject.SetActive(true);
@@ -539,7 +457,7 @@
             m_FadeInStory.Play();
         }
 
-        private void OnEnterShowUnlock()
+        private void OnEnterShowComplete()
         {
             m_ContainerFinishShow.gameObject.SetActive(true);
         }
@@ -566,11 +484,9 @@
             ShowModel,
             SliderName,
             ShowNameAndSliderUnlock,
-            ShowFunc,
-            ShowSkill,
-            ShowSpecialEffect,
-            ShowStory,
             ShowUnlock,
+            ShowStory,
+            ShowComplete,
             FadeOut,
             FlyTo,
         }
diff --git a/System/Treasure/TreasureStageTipWin.cs b/System/Treasure/TreasureStageTipWin.cs
index 716514b..d8927f4 100644
--- a/System/Treasure/TreasureStageTipWin.cs
+++ b/System/Treasure/TreasureStageTipWin.cs
@@ -26,8 +26,6 @@
         [SerializeField] Image m_Icon;
         [SerializeField] Text m_StageName;
         [SerializeField] Text m_Description;
-        [SerializeField] RectTransform m_ContainerSpecial;
-        [SerializeField] List<Text> m_TreasurePrivileges;
 
         TreasureModel m_Model;
         TreasureModel model
@@ -98,7 +96,6 @@
 
             m_ContainerSkill.gameObject.SetActive(false);
             m_ContainerFuncSoul.gameObject.SetActive(false);
-            m_ContainerSpecial.gameObject.SetActive(false);
 
             switch (m_TreasureStage.unlockType)
             {
@@ -131,15 +128,13 @@
                         m_Description.text = string.Empty;
                     }
                     break;
-                //case TreasureStageUnlock.Privilege:
-                //    m_ContainerFuncSoul.gameObject.SetActive(true);
-                //    m_ContainerSpecial.gameObject.SetActive(true);
-                //    var privilegeConfig = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(m_TreasureStage.privilege);
-                //    m_Icon.SetSprite(privilegeConfig.Icon);
-                //    m_StageName.text = privilegeConfig.Name;
-                //    m_Description.text = UIHelper.ReplaceNewLine(privilegeConfig.Description);
-                //    DisplayTreasureSpecial();
-                //    break;
+                case TreasureStageUnlock.Treasure:
+                    m_ContainerFuncSoul.gameObject.SetActive(true);
+                    var treasureConfig = ConfigManager.Instance.GetTemplate<TreasureConfig>(m_TreasureStage.treasure);
+                    m_Icon.SetSprite(treasureConfig.Icon);
+                    m_StageName.text = treasureConfig.Name;
+                    m_Description.text = UIHelper.ReplaceNewLine(treasureConfig.Verse.Length > 0 ? treasureConfig.Verse[0] : string.Empty);
+                    break;
             }
         }
 
diff --git a/System/Treasure/TreasureUnlockCell.cs b/System/Treasure/TreasureUnlockCell.cs
index 0608bb1..d17bc75 100644
--- a/System/Treasure/TreasureUnlockCell.cs
+++ b/System/Treasure/TreasureUnlockCell.cs
@@ -15,9 +15,8 @@
 
         TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
 
-        public void Display(int id, int stage, bool last = false)
+        public void Display(int id, int stage)
         {
-            m_Cutline.gameObject.SetActive(!last);
             m_Button.RemoveAllListeners();
             Treasure treasure;
             if (model.TryGetTreasure(id, out treasure))
@@ -26,6 +25,19 @@
                 {
                     return x.stage == stage;
                 });
+                bool last = true;
+                for (int i = 0; i < treasure.treasureStages.Count; i++)
+                {
+                    var _stage = treasure.treasureStages[i];
+                    if (stage < _stage.stage &&
+                        (_stage.unlockType == TreasureStageUnlock.Func || _stage.unlockType == TreasureStageUnlock.Skill
+                        || _stage.unlockType == TreasureStageUnlock.Treasure))
+                    {
+                        last = false;
+                        break;
+                    }
+                }
+                m_Cutline.gameObject.SetActive(!last);
                 if (treasureStage != null)
                 {
                     switch (treasureStage.unlockType)

--
Gitblit v1.8.0