using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TalentSkillBehaviour : MonoBehaviour { [SerializeField] Image m_Icon; [SerializeField] Text m_Level; [SerializeField] Button m_Button; [SerializeField] RectTransform m_ContainerSelect; int skillId = 0; TalentModel model { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_Button.onClick.AddListener(SelectSkill); } public void Display(int _skillId) { skillId = _skillId; model.talentSkillUpdate -= TalentSkillUpdate; model.talentSkillUpdate += TalentSkillUpdate; model.selectSkillEvent -= OnSelectSkillEvent; model.selectSkillEvent += OnSelectSkillEvent; Display(); } private void Display() { TalentSkill talent; if (model.TryGetTalent(skillId, out talent)) { var config = Config.Instance.Get(talent.skillId); if (config != null) { m_Icon.SetSprite(config.IconName); } m_Level.text = StringUtility.Contact(talent.level, "/", talent.maxLevel); m_Icon.material = talent.level > 0 ? MaterialUtility.GetUIDefaultGraphicMaterial() : MaterialUtility.GetDefaultSpriteGrayMaterial(); m_ContainerSelect.gameObject.SetActive(skillId == model.selectSkill); } } private void TalentSkillUpdate(int _skillid) { if (skillId == _skillid) { Display(); } } private void OnSelectSkillEvent() { m_ContainerSelect.gameObject.SetActive(skillId == model.selectSkill); } public void Dispose() { model.talentSkillUpdate -= TalentSkillUpdate; model.selectSkillEvent -= OnSelectSkillEvent; } private void SelectSkill() { if (skillId != 0) { model.selectSkill = skillId; } } } }