using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class ExpertSkillConditionCell : MonoBehaviour { [SerializeField] Text m_Condition; [SerializeField] Text m_Description; [SerializeField] Image m_Line; [SerializeField] UIEffect m_Effect; int skillId = 0; int level = 0; TreasureSkillModel model { get { return ModelCenter.Instance.GetModel(); } } public void Display(int skillId,int level) { this.skillId = skillId; this.level = level; var activeLevel = 0; model.TryGetExpertActiveLevel(skillId, out activeLevel); var treasureSkillId = 0; model.ContainsSkill(skillId, out treasureSkillId); var treasureSkillActive = false; TreasureSkill treasureSkill; if (model.TryGetSkill(treasureSkillId, out treasureSkill)) { treasureSkillActive = treasureSkill.level > 0; } var skillConfig = SkillConfig.Get(skillId + level - 1); var property = skillConfig.RequireProperty(); var currentValue = UIHelper.GetPropertyValue((PropertyType)property); var propertyConfig = PlayerPropertyConfig.Get(property); var valueLabel = UIHelper.AppendColor(currentValue >= (ulong)skillConfig.RequirePropertyValue() && treasureSkillActive ? TextColType.DarkGreen : TextColType.Red , skillConfig.RequirePropertyValue().ToString()); m_Condition.text = string.Format("{0} {1}{2}{3}", Language.Get("ExpertSkillLV", Language.Get("Num_CHS_" + level)), propertyConfig.Name, valueLabel, Language.Get("L1130")); m_Description.text = skillConfig.Description; m_Line.SetActive(level < skillConfig.SkillMaxLV); if (activeLevel >= level) { if (WindowCenter.Instance.IsOpen()) { m_Description.color = UIHelper.s_LightYellow; m_Condition.color = UIHelper.s_Gold; } else { m_Description.color = UIHelper.s_NavyBrown; m_Condition.color = UIHelper.s_BrightDanLV4; } } else { m_Description.color = UIHelper.s_BrightWhiteColor; m_Condition.color = UIHelper.s_BrightWhiteColor; if (currentValue >= (ulong)skillConfig.RequirePropertyValue() && treasureSkillActive) { m_Condition.text += UIHelper.AppendColor(TextColType.DarkGreen, Language.Get("SkillTip1")); } } model.expertActiveRefresh -= ExpertActiveRefresh; model.expertActiveRefresh += ExpertActiveRefresh; } public void Dispose() { 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, level); } } } }