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 treasureSoulId = 0;
|
|
TreasureSpecialData special;
|
|
TreasureSoulModel model
|
{
|
get
|
{
|
return ModelCenter.Instance.GetModel<TreasureSoulModel>();
|
}
|
}
|
|
AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
|
|
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.TryGetRealmAchievement(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 = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(_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_Lock.gameObject.SetActive(false);
|
m_SoulState.text = Language.Get("TreasureSoul_Awoke");
|
}
|
else
|
{
|
int achievementId = 0;
|
bool unlock = true;
|
if (model.TryGetRealmAchievement(treasureSoulId, out achievementId))
|
{
|
Achievement achievement;
|
if (achievementModel.TryGetAchievement(achievementId, out achievement))
|
{
|
unlock = achievement.completed;
|
}
|
}
|
m_Lock.gameObject.SetActive(!unlock);
|
if (unlock)
|
{
|
m_SoulState.text = Language.Get("TreasureSoul_Awaking");
|
}
|
else
|
{
|
var successConfig = ConfigManager.Instance.GetTemplate<SuccessConfig>(achievementId);
|
var realmConfig = ConfigManager.Instance.GetTemplate<RealmConfig>(successConfig.NeedCnt);
|
m_SoulState.text = Language.Get("TreasureSoulRealm", realmConfig.Img);
|
}
|
}
|
}
|
}
|
|
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;
|
}
|
}
|
}
|