using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class TreasureSoulAchievementCell : CellView { [SerializeField] Text m_Description; [SerializeField] Text m_Progress; [SerializeField] Image m_Complete; [SerializeField] Button m_Goto; AchievementModel model { get { return ModelCenter.Instance.GetModel(); } } TreasureSoulModel treasureSoulModel { get { return ModelCenter.Instance.GetModel(); } } int achievementId = 0; private void OnEnable() { model.achievementProgressUpdateEvent += AchievementProgressUpdateEvent; model.achievementCompletedEvent += AchievementCompletedEvent; } private void OnDisable() { model.achievementProgressUpdateEvent -= AchievementProgressUpdateEvent; model.achievementCompletedEvent -= AchievementCompletedEvent; } private void AchievementProgressUpdateEvent(int _id) { if (_id == achievementId) { Display(achievementId); } } private void AchievementCompletedEvent(int _id) { if (_id == achievementId) { Display(achievementId); } } public void Display(int _achievementId) { achievementId = _achievementId; Achievement achievement; var config = Config.Instance.Get(_achievementId); if (config != null) { m_Description.text = UIHelper.ReplaceNewLine(AchievementModel.ParseAchievementDescription(achievementId)); } m_Complete.gameObject.SetActive(false); m_Goto.gameObject.SetActive(false); m_Goto.RemoveAllListeners(); if (model.TryGetAchievement(_achievementId, out achievement)) { var progress = achievement.completed ? config.NeedCnt : Mathf.Clamp(achievement.progress, 0, config.NeedCnt); m_Progress.text = StringUtility.Contact("(", UIHelper.GetTextColorByItemColor(progress >= config.NeedCnt ? TextColType.Green : TextColType.Red, progress.ToString(), true) , "/", config.NeedCnt, ")"); m_Complete.gameObject.SetActive(achievement.completed); m_Goto.gameObject.SetActive(!achievement.completed); m_Goto.AddListener(() => { model.GotoCompleteAchievement(_achievementId); treasureSoulModel.gotoSoul = treasureSoulModel.selectSoul; }); } } } }