From a9330418549ede9871b90124641820b82c1ae16c Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期二, 22 一月 2019 19:40:11 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Realm/ActivateShow.cs                                   |   21 +
 System/JadeDynastySkill/JadeDynastySkillWin.cs                 |  141 +++++++++++
 System/JadeDynastySkill/JadeDynastySkillCell.cs                |   82 ++++++
 Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta |   12 +
 System/Realm/RealmPropertyUpWin.cs                             |   27 ++
 System/JadeDynastySkill/JadeDynastySkillWin.cs.meta            |   12 +
 System/JadeDynastySkill.meta                                   |    9 
 Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs      |   44 +++
 System/JadeDynastySkill/JadeDynastySkillModel.cs.meta          |   12 +
 UI/Common/FrameEffect.cs                                       |   22 +
 System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs           |    9 
 System/JadeDynastySkill/JadeDynastySkillCell.cs.meta           |   12 +
 System/JadeDynastySkill/JadeDynastySkillModel.cs               |  260 +++++++++++++++++++++
 13 files changed, 663 insertions(+), 0 deletions(-)

diff --git a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs
new file mode 100644
index 0000000..976ed2a
--- /dev/null
+++ b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs
@@ -0,0 +1,44 @@
+锘�//--------------------------------------------------------
+//    [Author]:			绗簩涓栫晫
+//    [  Date ]:		   Tuesday, January 22, 2019
+//--------------------------------------------------------
+
+using UnityEngine;
+using System;
+
+namespace TableConfig {
+
+    
+	public partial class SkillFrameAnimationConfig : ConfigBase {
+
+		public int skillTypeId { get ; private set ; }
+		public int totalTime { get ; private set ; }
+		public string[] spriteKeys;
+
+		public override string getKey()
+        {
+            return skillTypeId.ToString();
+        }
+
+		public override void Parse() {
+			try
+            {
+                skillTypeId=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
+			
+				totalTime=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; 
+			
+				spriteKeys = rawContents[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+            }
+            catch (Exception ex)
+            {
+                DebugEx.Log(ex);
+            }
+		}
+	
+	}
+
+}
+
+
+
+
diff --git a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta
new file mode 100644
index 0000000..bfc46f6
--- /dev/null
+++ b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d2052f17dcdee634082ca8f214df0ecd
+timeCreated: 1548147951
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
index 221aee7..5153c5b 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
@@ -7,6 +7,7 @@
     public class JadeDynastyKnapSackWin : Window
     {
         [SerializeField] FunctionButton funcEquip;
+        [SerializeField] FunctionButton m_JadeDynastySkill;
         [SerializeField] FunctionButtonGroup funcGroup;
         [SerializeField] Button closeBtn;
         [SerializeField] Button leftBtn;
@@ -23,6 +24,7 @@
             leftBtn.AddListener(ClickLeft);
             rightBtn.AddListener(ClickRight);
             funcEquip.AddListener(ClickFuncEquip);
+            m_JadeDynastySkill.AddListener(OpenJadeDynastySkill);
         }
 
         protected override void OnPreOpen()
@@ -74,6 +76,13 @@
             functionOrder = funcEquip.order;
         }
 
+        private void OpenJadeDynastySkill()
+        {
+            CloseSubWindows();
+            WindowCenter.Instance.Open<JadeDynastySkillWin>();
+            functionOrder = m_JadeDynastySkill.order;
+        }
+
         private void ClickClose()
         {
             CloseSubWindows();
diff --git a/System/JadeDynastySkill.meta b/System/JadeDynastySkill.meta
new file mode 100644
index 0000000..5429799
--- /dev/null
+++ b/System/JadeDynastySkill.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2f9ea79536d2476479a4288b9329e172
+folderAsset: yes
+timeCreated: 1548126896
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastySkill/JadeDynastySkillCell.cs b/System/JadeDynastySkill/JadeDynastySkillCell.cs
new file mode 100644
index 0000000..aaf0df9
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillCell.cs
@@ -0,0 +1,82 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastySkillCell : CellView
+    {
+        [SerializeField] Transform m_ContainerSelect;
+        [SerializeField] Image m_SkillIcon;
+        [SerializeField] Text m_SkillName;
+        [SerializeField] Transform m_ContainerSkillLock;
+        [SerializeField] Text m_Condition;
+        [SerializeField] Text[] m_EquipPlaceNames;
+        [SerializeField] Transform m_ContainerLock;
+        [SerializeField] Transform m_ContainerUnlockable;
+        [SerializeField] Button m_Unlock;
+        [SerializeField] Transform m_ContainerUnlocked;
+
+        JadeDynastySkillModel model
+        {
+            get { return ModelCenter.Instance.GetModel<JadeDynastySkillModel>(); }
+        }
+
+        public void Display(int skillId)
+        {
+            m_ContainerSelect.gameObject.SetActive(skillId == model.selectSkill);
+
+            m_Unlock.RemoveAllListeners();
+
+            var skillConfig = Config.Instance.Get<SkillConfig>(skillId);
+            if (skillConfig != null)
+            {
+                m_SkillIcon.SetSprite(skillConfig.IconName);
+                m_SkillName.text = skillConfig.SkillName;
+            }
+
+            var skillState = model.GetSkillState(skillId);
+            m_ContainerSkillLock.gameObject.SetActive(skillState != JadeDynastySkillState.Unlocked);
+            JadeDynastySkillCondition condition;
+
+            var index = 0;
+            if (model.TryGetSkillCondition(skillId, out condition))
+            {
+                m_Condition.text = Language.Get("JadeDynastySkillContition", condition.level);
+                foreach (var equipPlace in condition.equipPlaces)
+                {
+                    if (index < m_EquipPlaceNames.Length)
+                    {
+                        m_EquipPlaceNames[index].gameObject.SetActive(true);
+                        m_EquipPlaceNames[index].text = Language.Get("", equipPlace);
+                        m_EquipPlaceNames[index].color = skillState == JadeDynastySkillState.Unlocked || model.IsSatisfyEquipLevel(equipPlace, condition.level) ?
+                            UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.Gray, true);
+                    }
+                    index++;
+                }
+            }
+
+            for (int i = index; i < m_EquipPlaceNames.Length; i++)
+            {
+                m_EquipPlaceNames[i].gameObject.SetActive(false);
+            }
+
+            m_ContainerLock.gameObject.SetActive(skillState == JadeDynastySkillState.Lock);
+            m_ContainerUnlockable.gameObject.SetActive(skillState == JadeDynastySkillState.Unlockable);
+            m_ContainerUnlocked.gameObject.SetActive(skillState == JadeDynastySkillState.Unlocked);
+
+            if (skillState == JadeDynastySkillState.Unlockable)
+            {
+                m_Unlock.AddListener(() =>
+                {
+                    C0304_tagCAddSkillPoint pak = new C0304_tagCAddSkillPoint();
+                    pak.SkillID = (ushort)skillId;
+                    GameNetSystem.Instance.SendInfo(pak);
+                });
+            }
+        }
+    }
+}
+
diff --git a/System/JadeDynastySkill/JadeDynastySkillCell.cs.meta b/System/JadeDynastySkill/JadeDynastySkillCell.cs.meta
new file mode 100644
index 0000000..e0ba1c4
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillCell.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 173092759a751964e8bce56c5d62f138
+timeCreated: 1548143731
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastySkill/JadeDynastySkillModel.cs b/System/JadeDynastySkill/JadeDynastySkillModel.cs
new file mode 100644
index 0000000..93d3760
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillModel.cs
@@ -0,0 +1,260 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using TableConfig;
+using UnityEngine;
+namespace Snxxz.UI
+{
+    public class JadeDynastySkillModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
+    {
+        Dictionary<int, List<int>> jadeDynastySkills = new Dictionary<int, List<int>>();
+        Dictionary<int, JadeDynastySkillCondition> skillConditions = new Dictionary<int, JadeDynastySkillCondition>();
+        Dictionary<int, Sprite[]> skillFrames = new Dictionary<int, Sprite[]>();
+        List<int> alreadyUnlockSkills = new List<int>();
+
+        bool serverInited = false;
+
+        public List<int> mySkills
+        {
+            get
+            {
+                var job = PlayerDatas.Instance.baseData.Job;
+                var key = (int)Mathf.Pow(2, job);
+                if (jadeDynastySkills.ContainsKey(key))
+                {
+                    return jadeDynastySkills[key];
+                }
+                else
+                {
+                    jadeDynastySkills[key] = new List<int>();
+                }
+                return jadeDynastySkills[key];
+            }
+        }
+
+        public readonly Redpoint redpoint = new Redpoint(117, 11702);
+
+        int m_SelectSkill;
+        public int selectSkill
+        {
+            get { return m_SelectSkill; }
+            set
+            {
+                if (m_SelectSkill != value)
+                {
+                    m_SelectSkill = value;
+                    if (selectSkillRefresh != null)
+                    {
+                        selectSkillRefresh(value);
+                    }
+                }
+            }
+        }
+
+        public event Action<int> skillRefresh;
+        public event Action<int> selectSkillRefresh;
+
+        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
+        public override void Init()
+        {
+            ParseConfig();
+            packModel.RefreshItemCountAct += RefreshItemCountAct;
+            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+        }
+
+        public void OnBeforePlayerDataInitialize()
+        {
+            alreadyUnlockSkills.Clear();
+            serverInited = false;
+        }
+
+        public void OnPlayerLoginOk()
+        {
+            serverInited = true;
+            UpdateRedpoint();
+        }
+
+        public override void UnInit()
+        {
+            packModel.RefreshItemCountAct -= RefreshItemCountAct;
+            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
+        }
+
+        void ParseConfig()
+        {
+            {
+                var config = Config.Instance.Get<FuncConfigConfig>("EquipZhuXian");
+                var json = LitJson.JsonMapper.ToObject(config.Numerical3);
+                foreach (var skillIdKey in json.Keys)
+                {
+                    var skillTypeId = int.Parse(skillIdKey);
+                    var skillConfig = Config.Instance.Get<SkillConfig>(skillTypeId);
+                    if (skillConfig == null)
+                    {
+                        continue;
+                    }
+                    List<int> list;
+                    if (!jadeDynastySkills.TryGetValue(skillConfig.UseType, out list))
+                    {
+                        list = new List<int>();
+                        jadeDynastySkills.Add(skillConfig.UseType, list);
+                    }
+                    list.Add(skillTypeId);
+                    var levelKey = json[skillIdKey].Keys.First();
+                    var level = int.Parse(levelKey);
+                    skillConditions.Add(skillTypeId, new JadeDynastySkillCondition()
+                    {
+                        level = level,
+                        equipPlaces = new List<int>(LitJson.JsonMapper.ToObject<int[]>(json[skillIdKey][levelKey].ToJson())),
+                    });
+                }
+            }
+
+            foreach (var skills in jadeDynastySkills.Values)
+            {
+                skills.Sort(Compare);
+            }
+        }
+
+        public bool IsSatisfyEquipLevel(int equipPlace, int level)
+        {
+            var itemModel = packModel.GetItemModelByIndex(PackType.rptJadeDynastyEquip, equipPlace);
+            if (itemModel != null)
+            {
+                return itemModel.chinItemModel.LV >= level;
+            }
+            return false;
+        }
+
+        public JadeDynastySkillState GetSkillState(int skillId)
+        {
+            if (alreadyUnlockSkills.Contains(skillId))
+            {
+                return JadeDynastySkillState.Unlocked;
+            }
+            JadeDynastySkillCondition condition;
+            if (TryGetSkillCondition(skillId, out condition))
+            {
+                foreach (var equipPlace in condition.equipPlaces)
+                {
+                    if (!IsSatisfyEquipLevel(equipPlace, condition.level))
+                    {
+                        return JadeDynastySkillState.Lock;
+                    }
+                }
+            }
+            return JadeDynastySkillState.Unlockable;
+        }
+
+        public bool TryGetSkillCondition(int skillId, out JadeDynastySkillCondition condition)
+        {
+            return skillConditions.TryGetValue(skillId, out condition);
+        }
+
+        public bool TryGetSkillFrames(int skillId, out Sprite[] _sprites)
+        {
+            if (!skillFrames.ContainsKey(skillId))
+            {
+                var config = Config.Instance.Get<SkillFrameAnimationConfig>(skillId);
+                if (config != null)
+                {
+                    Sprite[] sprites = new Sprite[config.spriteKeys.Length];
+                    for (int i = 0; i < config.spriteKeys.Length; i++)
+                    {
+                        var sprite = UILoader.LoadSprite(config.spriteKeys[i]);
+                        sprites[i] = sprite;
+                    }
+                    skillFrames.Add(skillId, sprites);
+                }
+            }
+            return skillFrames.TryGetValue(skillId, out _sprites);
+        }
+
+        public void OnReceivePackage(H0310_tagRoleSkillChange package)
+        {
+            var skillConfig = Config.Instance.Get<SkillConfig>(package.NewSkillID);
+            if (skillConfig != null &&
+                mySkills.Contains(skillConfig.SkillTypeID))
+            {
+                if (!alreadyUnlockSkills.Contains(skillConfig.SkillTypeID))
+                {
+                    alreadyUnlockSkills.Add(skillConfig.SkillTypeID);
+                    if (skillRefresh != null)
+                    {
+                        skillRefresh(skillConfig.SkillTypeID);
+                    }
+
+                    if (serverInited)
+                    {
+                        if (!NewBieCenter.Instance.inGuiding
+                            && !WindowCenter.Instance.IsOpen<RealmPropertyUpWin>())
+                        {
+                            ActivateShow.JadeDynastySkillUnlock(skillConfig.SkillTypeID);
+                        }
+                    }
+                }
+                UpdateRedpoint();
+            }
+        }
+
+        private int Compare(int lhs, int rhs)
+        {
+            if (skillConditions.ContainsKey(lhs)
+                && skillConditions.ContainsKey(rhs))
+            {
+                return skillConditions[lhs].level.CompareTo(skillConditions[rhs].level);
+            }
+            return 0;
+        }
+
+        private void RefreshItemCountAct(PackType packType, int arg2, int arg3)
+        {
+            if (packType == PackType.rptJadeDynastyEquip)
+            {
+                UpdateRedpoint();
+            }
+        }
+
+        private void OnFuncStateChangeEvent(int id)
+        {
+            if (id == 167)
+            {
+                UpdateRedpoint();
+            }
+        }
+
+        void UpdateRedpoint()
+        {
+            var unlockable = false;
+            if (FuncOpen.Instance.IsFuncOpen(167))
+            {
+                foreach (var skill in mySkills)
+                {
+                    var state = GetSkillState(skill);
+                    if (state == JadeDynastySkillState.Unlockable)
+                    {
+                        unlockable = true;
+                        break;
+                    }
+                }
+            }
+            redpoint.state = unlockable ? RedPointState.Simple : RedPointState.None;
+        }
+    }
+
+    public struct JadeDynastySkillCondition
+    {
+        public int level;
+        public List<int> equipPlaces;
+    }
+
+    public enum JadeDynastySkillState
+    {
+        Lock,
+        Unlockable,
+        Unlocked,
+    }
+}
+
diff --git a/System/JadeDynastySkill/JadeDynastySkillModel.cs.meta b/System/JadeDynastySkill/JadeDynastySkillModel.cs.meta
new file mode 100644
index 0000000..6f9815d
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 54964ff87641376429f6b467cf990d8e
+timeCreated: 1548127288
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastySkill/JadeDynastySkillWin.cs b/System/JadeDynastySkill/JadeDynastySkillWin.cs
new file mode 100644
index 0000000..cfa42e0
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillWin.cs
@@ -0,0 +1,141 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Tuesday, January 22, 2019
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI {
+
+    public class JadeDynastySkillWin : Window
+    {
+        [SerializeField] Text m_SkillDescription;
+        [SerializeField] Text m_SkillFightPower;
+        [SerializeField] FrameEffect m_SkillFrame;
+
+        [SerializeField] ScrollerController m_ScrollerControl;
+
+        JadeDynastySkillModel model
+        {
+            get { return ModelCenter.Instance.GetModel<JadeDynastySkillModel>(); }
+        }
+
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+            m_ScrollerControl.OnRefreshCell += OnRefreshCell;
+        }
+
+        protected override void OnPreOpen()
+        {
+            SetDefaultSelect();
+            Display();
+
+            model.selectSkillRefresh += SelectSkillRefresh;
+            model.skillRefresh += SkillRefresh;
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+            model.selectSkillRefresh -= SelectSkillRefresh;
+            model.skillRefresh -= SkillRefresh;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+
+        void SetDefaultSelect()
+        {
+            foreach (var skill in model.mySkills)
+            {
+                if (model.GetSkillState(skill) == JadeDynastySkillState.Unlockable)
+                {
+                    model.selectSkill = skill;
+                    return;
+                }
+            }
+            model.selectSkill = model.mySkills[0];
+        }
+
+        void Display()
+        {
+            DisplaySkills();
+            DisplaySkillDetail();
+        }
+
+        void DisplaySkills()
+        {
+            m_ScrollerControl.Refresh();
+            foreach (var skill in model.mySkills)
+            {
+                m_ScrollerControl.AddCell(ScrollerDataType.Header, skill,OnSelectSkill);
+            }
+            m_ScrollerControl.Restart();
+
+            var index = model.mySkills.IndexOf(model.selectSkill);
+            if (index != -1)
+            {
+                m_ScrollerControl.JumpIndex(index);
+            }
+        }
+
+        void DisplaySkillDetail()
+        {
+            var skillConfig = Config.Instance.Get<SkillConfig>(model.selectSkill);
+            if (skillConfig != null)
+            {
+                m_SkillDescription.text = skillConfig.Description;
+                m_SkillFightPower.text = StringUtility.Contact("+", skillConfig.FightPower);
+
+                Sprite[] sprites;
+                if (model.TryGetSkillFrames(model.selectSkill, out sprites))
+                {
+                    var config = Config.Instance.Get<SkillFrameAnimationConfig>(model.selectSkill);
+                    m_SkillFrame.SetSprites(sprites, (float)config.totalTime / 1000);
+                }
+            }
+        }
+
+        private void SelectSkillRefresh(int skillId)
+        {
+            DisplaySkillDetail();
+            m_ScrollerControl.m_Scorller.RefreshActiveCellViews();
+        }
+
+        private void OnSelectSkill(CellView cell)
+        {
+            model.selectSkill = cell.index;
+        }
+
+        private void SkillRefresh(int id)
+        {
+            m_ScrollerControl.RefreshSingleCellView(id);
+        }
+
+        private void OnRefreshCell(ScrollerDataType type, CellView cell)
+        {
+            var skillCell = cell as JadeDynastySkillCell;
+            skillCell.Display(cell.index);
+        }
+    }
+
+}
+
+
+
+
diff --git a/System/JadeDynastySkill/JadeDynastySkillWin.cs.meta b/System/JadeDynastySkill/JadeDynastySkillWin.cs.meta
new file mode 100644
index 0000000..05a64a0
--- /dev/null
+++ b/System/JadeDynastySkill/JadeDynastySkillWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6ed84d1a53f9ac844be81ad82535b43e
+timeCreated: 1548139898
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Realm/ActivateShow.cs b/System/Realm/ActivateShow.cs
index e744694..4f5dd6b 100644
--- a/System/Realm/ActivateShow.cs
+++ b/System/Realm/ActivateShow.cs
@@ -361,6 +361,26 @@
             }
         }
 
+        public static void JadeDynastySkillUnlock(int skillId)
+        {
+            activateType = ActivateFunc.JadeDynastySkill;
+            skills.Clear();
+            fightPower = 0;
+            skills.Add(skillId);
+            titleIconKey = "UI_JH_6";
+
+            var config = Config.Instance.Get<SkillConfig>(skillId);
+            if (config != null)
+            {
+                fightPower = config.FightPower;
+            }
+
+            if (!WindowCenter.Instance.IsOpen<RealmPropertyUpWin>())
+            {
+                WindowCenter.Instance.Open<RealmPropertyUpWin>();
+            }
+        }
+
         public static void PrepareSkillFly()
         {
             if (prepareFlySkillEvent != null)
@@ -384,6 +404,7 @@
             Stove, //鐐间腹鐐夊崌绾�
             TreasureSoul,//娉曞疂榄傞鍙栧睘鎬�
             GodWeaponEffect,
+            JadeDynastySkill,
         }
 
         public struct PropertyCompare
diff --git a/System/Realm/RealmPropertyUpWin.cs b/System/Realm/RealmPropertyUpWin.cs
index 45bfd1a..4fac64c 100644
--- a/System/Realm/RealmPropertyUpWin.cs
+++ b/System/Realm/RealmPropertyUpWin.cs
@@ -30,6 +30,7 @@
         [SerializeField] SkillBehaviour[] m_Skills;
         [SerializeField] RectTransform m_ContainerNewGotSkill;
         [SerializeField] SkillBehaviour m_NewGotSkill;
+        [SerializeField] FrameEffect m_NewGotSkillFrame;
         [SerializeField] RectTransform m_NewGotSkillPoint;
         [SerializeField] RectTransform m_ContainerRealm;
         [SerializeField] RectTransform m_ContainerRealmUp;
@@ -73,6 +74,7 @@
             m_ContainerRealm.gameObject.SetActive(false);
             m_ContainerTreasureSoul.gameObject.SetActive(false);
             m_ContainerGodWeaponEffect.gameObject.SetActive(false);
+            m_NewGotSkillFrame.gameObject.SetActive(false);
             m_DisplayAlphaTween.SetStartState();
             flying = false;
             startFly = false;
@@ -162,6 +164,10 @@
                     DisplayFightPower();
                     DisplayLv();
                     DisplayGodWeaponEffect();
+                    DisplayNewGotSkill();
+                    break;
+                case ActivateShow.ActivateFunc.JadeDynastySkill:
+                    DisplayFightPower();
                     DisplayNewGotSkill();
                     break;
             }
@@ -365,6 +371,15 @@
                         }
                     }
                     break;
+                case ActivateShow.ActivateFunc.JadeDynastySkill:
+                    m_ContainerNewGotSkill.gameObject.SetActive(ActivateShow.skills.Count > 0);
+                    if (ActivateShow.skills.Count == 0)
+                    {
+                        return;
+                    }
+                    m_NewGotSkill.DisplayNewGot(ActivateShow.skills[0]);
+                    DisplaySkillFrame(ActivateShow.skills[0]);
+                    break;
                 default:
                     {
                         m_ContainerNewGotSkill.gameObject.SetActive(ActivateShow.skills.Count > 0);
@@ -400,6 +415,18 @@
             m_GodWeaponStage.text = Language.Get("MagicWin_9", config.Name, stage);
         }
 
+        void DisplaySkillFrame(int skillId)
+        {
+            m_NewGotSkillFrame.gameObject.SetActive(true);
+            var model = ModelCenter.Instance.GetModel<JadeDynastySkillModel>();
+            Sprite[] sprites;
+            if (model.TryGetSkillFrames(skillId, out sprites))
+            {
+                var config = Config.Instance.Get<SkillFrameAnimationConfig>(skillId);
+                m_NewGotSkillFrame.SetSprites(sprites, (float)config.totalTime / 1000);
+            }
+        }
+
         void PrepareFly(int _skillId)
         {
             ActivateShow.PrepareSkillFly();
diff --git a/UI/Common/FrameEffect.cs b/UI/Common/FrameEffect.cs
index 9e2ee23..61c8786 100644
--- a/UI/Common/FrameEffect.cs
+++ b/UI/Common/FrameEffect.cs
@@ -45,6 +45,11 @@
             timer += Time.deltaTime;
             tempSumTime -= Time.deltaTime;
 
+            if (m_Sprites == null || m_Sprites.Length == 0)
+            {
+                return;
+            }
+
             if(tempSumTime > 0)
             {
                 if (timer > interval)
@@ -68,6 +73,23 @@
             }
         }
 
+        public void SetSprites(Sprite[] sprites,float _totalTime)
+        {
+            m_Sprites = sprites;
+            onceTime = _totalTime;
+            sumTime = _totalTime;
+            if (m_Sprites != null && m_Sprites.Length > 0)
+            {
+                interval = onceTime / m_Sprites.Length;
+                index = 0;
+                timer = 0f;
+                tempSumTime = sumTime;
+
+                m_Behaviour.overrideSprite = m_Sprites[index];
+                m_Behaviour.SetNativeSize();
+            }
+        }
+
     }
 
 }

--
Gitblit v1.8.0