using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using System; namespace Snxxz.UI { public class TreasureSoulBehaviour : MonoBehaviour { [SerializeField] Text m_SoulName; [SerializeField] Text m_SoulState; [SerializeField] Image m_Lock; [SerializeField] Image m_SelectImg; [SerializeField] Button m_SelectBtn; [SerializeField] RedpointBehaviour m_Redpoint; int treasureId = 0; Treasure treasure; TreasureModel model { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_SelectBtn.onClick.AddListener(OnSelect); } private void OnEnable() { model.treasureSelectSoulChangeEvent += TreasureSelectSoulChangeEvent; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; } private void OnDisable() { model.treasureSelectSoulChangeEvent -= TreasureSelectSoulChangeEvent; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; } public void Display(int _id) { treasureId = _id; m_Redpoint.redpointId = 0; if (model.TryGetTreasure(_id, out treasure)) { var _privilege = treasure.unLockPrivilege; var config = ConfigManager.Instance.GetTemplate(_privilege); if (config == null) { return; } m_Redpoint.redpointId = treasure.specialData.privilegeRedpoint != null ? treasure.specialData.privilegeRedpoint.id : 0; m_SoulName.text = config.Name; m_SelectImg.SetSprite(model.selectSoul == treasureId ? "ListBtn_Select" : "ListBtn_UnSelect"); DisplayState(); } } void DisplayState() { if (treasure != null) { var stage = treasure.treasureStages[treasure.StageCount - 1]; m_Lock.gameObject.SetActive(PlayerDatas.Instance.baseData.LV < stage.limitLevel); if (PlayerDatas.Instance.baseData.LV < stage.limitLevel) { m_SoulState.text = Language.Get("TreasurePrivilege_Unlock", stage.limitLevel); } else if (treasure.IsMaxStage()) { m_SoulState.text = Language.Get("TreasureSoul_Awoke"); } else { m_SoulState.text = Language.Get("TreasureSoul_Awaking"); } } } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType) { if (refreshType == PlayerDataRefresh.LV) { DisplayState(); } } private void TreasureSelectSoulChangeEvent(int _id) { if (treasure != null) { m_SelectImg.SetSprite(model.selectSoul == treasureId ? "ListBtn_Select" : "ListBtn_UnSelect"); } } private void OnSelect() { if(model.TryGetTreasure(treasureId,out treasure)) { model.selectSoul = treasureId; } } } }