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_SelectImg; [SerializeField] Button m_SelectBtn; [SerializeField] RedpointBehaviour m_Redpoint; int treasureSoulId = 0; TreasureSpecialData special; TreasureSoulModel model { get { return ModelCenter.Instance.GetModel(); } } AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_SelectBtn.onClick.AddListener(OnSelect); } private void OnEnable() { model.treasureSelectSoulChangeEvent += TreasureSelectSoulChangeEvent; model.treasureSoulEvent += TreasureSoulEvent; achievementModel.achievementCompletedEvent += AchievementCompletedEvent; } private void OnDisable() { model.treasureSelectSoulChangeEvent -= TreasureSelectSoulChangeEvent; model.treasureSoulEvent -= TreasureSoulEvent; achievementModel.achievementCompletedEvent -= AchievementCompletedEvent; } private void AchievementCompletedEvent(int _id) { int achievementId = 0; if (model.TryGetLockAchievement(treasureSoulId, out achievementId)) { if (achievementId == _id) { DisplayState(); } } } public void Display(int _id) { treasureSoulId = _id; m_Redpoint.redpointId = 0; if (model.TryGetTreasureSoul(_id, out special)) { var config = Config.Instance.Get(_id); if (config == null) { return; } m_Redpoint.redpointId = special.redpoint.id; m_SoulName.text = config.Name; m_SelectImg.SetSprite(model.selectSoul == treasureSoulId ? "ListBtn_Select" : "ListBtn_UnSelect"); DisplayState(); } } void DisplayState() { if (special != null) { if (special.active) { m_SoulState.text = Language.Get("TreasureSoul_Awoke"); } else { int achievementId = 0; bool unlock = true; if (model.TryGetLockAchievement(treasureSoulId, out achievementId)) { Achievement achievement; if (achievementModel.TryGetAchievement(achievementId, out achievement)) { unlock = achievement.completed; } } if (unlock) { m_SoulState.text = Language.Get("TreasureSoul_Awaking"); } else { var successConfig = Config.Instance.Get(achievementId); m_SoulState.text = Language.Get("TreasureSoulRealm", successConfig.NeedCnt); } } } } private void TreasureSelectSoulChangeEvent(int _id) { if (special != null) { m_SelectImg.SetSprite(model.selectSoul == treasureSoulId ? "ListBtn_Select" : "ListBtn_UnSelect"); } } private void TreasureSoulEvent(int _id) { if (_id == treasureSoulId) { DisplayState(); } } private void OnSelect() { model.selectSoul = treasureSoulId; } } }