using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class CrossServerOneVsOneRoundWin : Window { [SerializeField] Image roundImg; [SerializeField] GameObject victoryObj; [SerializeField] GameObject failureObj; [SerializeField] Text infoText; [SerializeField] Text coolTimeText; CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } int coolTime = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { SetDisplay(); } protected override void OnAfterOpen() { } protected override void LateUpdate() { base.LateUpdate(); UpdateCoolTime(); } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void SetDisplay() { int roundNum = dungeonModel.mission.roundNum; coolTime = -1; bool isWin = IsWin(); victoryObj.SetActive(isWin); failureObj.SetActive(!isWin); UpdateCoolTime(); switch (roundNum) { case 1: roundImg.SetSprite("CrossServer_25"); break; case 2: roundImg.SetSprite("CrossServer_23"); break; case 3: roundImg.SetSprite("CrossServer_24"); break; } } private void UpdateCoolTime() { if (crossServerModel.roundEndTime > DateTime.Now) { var surplusTime = Mathf.Clamp((int)(crossServerModel.roundEndTime - DateTime.Now).TotalSeconds, 0, int.MaxValue); if (coolTime != surplusTime) { coolTime = surplusTime + 1; coolTimeText.text = coolTime.ToString(); } } else { CloseImmediately(); } } private bool IsWin() { int roundNum = dungeonModel.mission.roundNum; int[] winerIds = dungeonModel.mission.roundWinerIDList; if (winerIds == null) return false; int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; int index = roundNum - 1; if(index < winerIds.Length) { if(playerId == winerIds[index]) { return true; } } return false; } } }