using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; namespace Snxxz.UI { [XLua.Hotfix] public class KingThreeDimensionsBehaviour : MonoBehaviour { [SerializeField] RectTransform m_ContainerSeasonNotStart; [SerializeField] RectTransform m_ContainerSeasonStartOrEnd; [SerializeField] Text m_Season; [SerializeField] Image m_EndState; [SerializeField] Image m_OnGoingState; [SerializeField] Text m_Division; [SerializeField] Text m_Score; [SerializeField] RectTransform m_ContainerWearToggle; [SerializeField] Image m_WearCheck; [SerializeField] TreasureUIEvent m_Wear; KingTreasureModel model { get { return ModelCenter.Instance.GetModel(); } } TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel(); } } CrossServerOneVsOneModel oneVsOneModel { get { return ModelCenter.Instance.GetModel(); } } int displayTreasureId = 0; private void Awake() { m_Wear.onClick += OnWear; } public void Display(int treasureId) { displayTreasureId = treasureId; var season = 0; Treasure treasure; if (model.TryGetSeason(treasureId, out season) && treasureModel.TryGetTreasure(treasureId, out treasure)) { var seasonNotStart = model.GetSeasonState(treasureId) == 0; m_ContainerSeasonNotStart.gameObject.SetActive(seasonNotStart); m_ContainerSeasonStartOrEnd.gameObject.SetActive(!seasonNotStart); bool seasonEnd = model.GetSeasonState(treasureId) == 2; if (!seasonNotStart) { m_EndState.gameObject.SetActive(seasonEnd); m_OnGoingState.gameObject.SetActive(!seasonEnd); m_Season.text = season.ToString(); m_Division.gameObject.SetActive(seasonEnd && treasure.state == TreasureState.Collected); CrossServerOneVsOneModel.CrossServerOneVsOneHistory history; if (oneVsOneModel.TryGetOneVsOneHistory(season, out history)) { var divisionConfig = CrossServerArenaConfig.Get(history.division); if (divisionConfig != null) { m_Division.text = divisionConfig.Name; m_Division.color = UIHelper.GetDanLVColor(history.division); } m_Score.gameObject.SetActive(treasure.state == TreasureState.Collected); m_Score.text = Language.Get("KingTreasureScore", model.GetSeasonScore(treasureId)); } else { m_Division.gameObject.SetActive(false); m_Score.gameObject.SetActive(false); } } } DisplayWear(); model.treasureWearRefresh -= TreasureWearRefresh; model.treasureWearRefresh += TreasureWearRefresh; } void DisplayWear() { Treasure treasure; if (treasureModel.TryGetTreasure(displayTreasureId, out treasure)) { m_ContainerWearToggle.gameObject.SetActive(treasure.state == TreasureState.Collected); m_WearCheck.gameObject.SetActive(model.IsWear(displayTreasureId)); } else { m_ContainerWearToggle.gameObject.SetActive(false); } } public void OnWear() { if (displayTreasureId != 0) { model.TryWearTreasure(displayTreasureId); } } private void TreasureWearRefresh() { DisplayWear(); } public void Dispose() { model.treasureWearRefresh -= TreasureWearRefresh; } } }