using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
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<AchievementModel>(); } }
|
|
TreasureSoulModel treasureSoulModel { get { return ModelCenter.Instance.GetModel<TreasureSoulModel>(); } }
|
|
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 = SuccessConfig.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.AppendStringColor(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;
|
});
|
}
|
}
|
}
|
}
|