using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class ExpertSkillConditionCell : ScrollItem { [SerializeField] UIAlphaTween m_AlphaTween; [SerializeField] UILinerMove m_LinerMove; [SerializeField] Text m_Condition; [SerializeField] Text m_Description; [SerializeField] Image m_Line; [SerializeField] UIEffect m_Effect; public UIAlphaTween alphaTween { get { return m_AlphaTween; } } public UILinerMove linerMove { get { return m_LinerMove; } } int skillId = 0; int level = 0; TreasureSkillModel model { get { return ModelCenter.Instance.GetModel(); } } public override void Display(object _data) { var data = (int)_data; skillId = data / 100; level = data % 100; m_AlphaTween.SetStartState(); var activeLevel = 0; model.TryGetExpertActiveLevel(skillId, out activeLevel); var skillConfig = SkillConfig.Get(skillId + level - 1); var property = skillConfig.RequireProperty(); var propertyConfig = PlayerPropertyConfig.Get(property); var valueLabel = UIHelper.AppendColor(TextColType.Green, skillConfig.RequirePropertyValue().ToString()); m_Condition.text = string.Format("{0}灵根{1}激活", propertyConfig.Name, valueLabel); m_Description.text = skillConfig.Description; m_Line.gameObject.SetActive(level < skillConfig.SkillMaxLV); var currentValue = UIHelper.GetPropertyValue((PropertyType)property); if (activeLevel >= level) { m_Description.color = UIHelper.s_LightYellow; m_Condition.color = UIHelper.s_Gold; } else { m_Description.color = UIHelper.s_BrightWhiteColor; m_Condition.color = UIHelper.s_BrightWhiteColor; if (currentValue >= skillConfig.RequirePropertyValue()) { m_Condition.text += UIHelper.AppendColor(TextColType.Green, "(可激活)"); } } model.expertActiveRefresh -= ExpertActiveRefresh; model.expertActiveRefresh += ExpertActiveRefresh; } public override void Dispose() { base.Dispose(); m_AlphaTween.SetStartState(); model.expertActiveRefresh -= ExpertActiveRefresh; } private void ExpertActiveRefresh(int id) { if (skillId == id) { var activeLevel = 0; model.TryGetExpertActiveLevel(id, out activeLevel); if (activeLevel == level) { m_Effect.Play(); } Display(skillId * 100 + level); } } } }