少年修仙传客户端代码仓库
client_linchunjie
2018-09-26 0ced6b94425308d2a672fb93e9d245906d1d4879
System/Skill/TalentWin.cs
@@ -28,10 +28,14 @@
        [SerializeField] Image m_SelectSkillIcon;
        [SerializeField] Text m_SelectSkillLevel;
        [SerializeField] Text m_SelectSkillName;
        [SerializeField] RectTransform m_ContainerUnActive;
        [SerializeField] RectTransform m_ContainerActive;
        [SerializeField] RectTransform m_ContainerBetter;
        [SerializeField] RectTransform m_ContainerMax;
        [SerializeField] Text[] m_SelectConditions;
        [SerializeField] RectTransform m_ContainerSelectEffect;
        [SerializeField] Text m_SelectSkillEffect;
        [SerializeField] RectTransform m_ContainerNextEffect;
        [SerializeField] Text m_SelectNextEffect;
@@ -42,6 +46,7 @@
#if UNITY_EDITOR
        [SerializeField] TalentTreeScriptable m_EditorScriptable;
        [SerializeField] bool m_EditorMode;
#endif
        TalentModel model { get { return ModelCenter.Instance.GetModel<TalentModel>(); } }
@@ -84,6 +89,10 @@
            {
                m_TalentSeries[i].Dispose();
            }
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                m_TalentSkills[i].Dispose();
            }
#if UNITY_EDITOR
            if (m_EditorScriptable != null)
@@ -102,7 +111,7 @@
        {
            base.LateUpdate();
#if UNITY_EDITOR
            if (m_EditorScriptable != null)
            if (m_EditorMode && m_EditorScriptable != null)
            {
                DisplayTalentLayout(m_EditorScriptable);
            }
@@ -113,27 +122,54 @@
        {
            for (int i = 0; i < m_TalentSeries.Length; i++)
            {
                m_TalentSeries[i].Display(model.selectSeries);
                m_TalentSeries[i].Display();
            }
            DisplaySkills();
            DisplaySeries();
            DisplayTalentType();
            DisplaySelectSkill();
            DisplayTalentPoint();
        }
        void DisplaySkills()
        {
            var job = PlayerDatas.Instance.baseData.Job;
            List<int> talents = null;
            model.TryGetTalents(job, model.selectTalentType, model.selectSeries, out talents);
            for (int i = 0; i < m_TalentConfigs.Length; i++)
            {
                if (m_TalentConfigs[i].Belong(job, model.selectTalentType, model.selectSeries))
                {
                    DisplayTalentLayout(m_TalentConfigs[i]);
                    break;
                }
            }
            if (talents != null && talents.Count > 0)
            {
                model.selectSkill = talents[0];
            }
            m_Scroller.verticalNormalizedPosition = 1;
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                if (talents != null && i < talents.Count)
                {
                    m_TalentSkills[i].gameObject.SetActive(true);
                    m_TalentSkills[i].Display(talents[i]);
                }
                else
                {
                    m_TalentSkills[i].Dispose();
                    m_TalentSkills[i].gameObject.SetActive(false);
                }
            }
        }
        void DisplaySeries()
        void DisplayTalentType()
        {
            var point = 0;
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 1);
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 2);
            point += model.GetTalentTypeTotalPoint(model.selectSeries, 3);
            m_TalentType.text = model.selectSeries == 1 ? string.Format("智力天赋({0})", point) : string.Format("力量天赋({0})", point);
            var point = model.GetTalentTypePoint(model.selectTalentType);
            m_TalentType.text = model.selectTalentType == 1 ? string.Format("智力天赋({0})", point) : string.Format("力量天赋({0})", point);
        }
        void DisplaySelectSkill()
@@ -151,8 +187,8 @@
            var index = 0;
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                var talentConfig = Config.Instance.Get<TalentConfig>(talent.skillId + talent.level);
                var skillConfig = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                var talentConfig = talent.GetTalentConfig(talent.level + 1);
                var skillConfig = talent.GetSkillConfig(talent.level + 1);
                if (talentConfig != null)
                {
                    if (talentConfig.requireSeriesPoint != 0 && index < m_SelectConditions.Length)
@@ -190,7 +226,7 @@
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                m_ContainerSelectSkill.gameObject.SetActive(true);
                var config = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                var config = talent.GetSkillConfig(talent.level);
                m_SelectSkillIcon.SetSprite(config.IconName);
                m_SelectSkillLevel.text = StringUtility.Contact(talent.level, "/", talent.maxLevel);
                m_SelectSkillName.text = config.SkillName;
@@ -202,12 +238,19 @@
            TalentSkill talent;
            if (model.TryGetTalent(model.selectSkill, out talent))
            {
                var config = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level);
                m_SelectSkillEffect.text = config.Description;
                m_ContainerNextEffect.gameObject.SetActive(talent.level < talent.maxLevel);
                m_ContainerUnActive.gameObject.SetActive(talent.level == 0);
                m_ContainerActive.gameObject.SetActive(talent.level > 0);
                m_ContainerBetter.gameObject.SetActive(talent.level < talent.maxLevel);
                m_ContainerMax.gameObject.SetActive(talent.level >= talent.maxLevel);
                if (talent.level > 0)
                {
                    var config = talent.GetSkillConfig(talent.level);
                    m_SelectSkillEffect.text = config.Description;
                }
                if (talent.level < talent.maxLevel)
                {
                    var nextConfig = Config.Instance.Get<SkillConfig>(talent.skillId + talent.level + 1);
                    var nextConfig = talent.GetSkillConfig(talent.level + 1);
                    m_SelectNextEffect.text = nextConfig.Description;
                }
            }
@@ -249,13 +292,15 @@
        private void OnSelectTalentTypeEvnet()
        {
            model.selectSeries = 1;
            DisplaySkills();
            DisplaySelectSkill();
        }
        private void OnSelectSeriesEvent()
        {
            model.selectTalentType = 1;
            Display();
            DisplaySkills();
            DisplaySelectSkill();
        }
        private void OnSelectSkillEvent()
@@ -296,6 +341,27 @@
                m_TalentSkills[i].transform.localPosition = element.position;
            }
        }
#if UNITY_EDITOR
        [ContextMenu("应用位置数据")]
        void ApplyPositionToScriptable()
        {
            if (m_EditorScriptable == null)
            {
                return;
            }
            var count = 0;
            for (int i = 0; i < m_TalentSkills.Length; i++)
            {
                if (m_TalentSkills[i].gameObject.activeSelf)
                {
                    m_EditorScriptable.ApplyTalentElement(count, m_TalentSkills[i].transform.localPosition);
                    count++;
                }
            }
            m_EditorScriptable.SyncElementsCount(count);
        }
#endif
    }
}