using System; using System.Collections; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class ReliveWin : Window { [SerializeField] private Text _timeDownText; [SerializeField] private Image _ringImage; [SerializeField] Text dieDesText; PlayerDeadModel _deadModel; PlayerDeadModel DeadModel { get { return _deadModel ?? (_deadModel = ModelCenter.Instance.GetModel()); } } int questTimes = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { TimeDownMgr.CoolTimeData coolDown; TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.DuplicatesReborn, out coolDown); RefreshTime(Mathf.RoundToInt(coolDown.duration - coolDown.time)); DeadModel.RefreshDuplicatesRebornCDEvent = RefreshTime; MapConfig mapConfig = Config.Instance.Get(PlayerDatas.Instance.baseData.MapID); dieDesText.gameObject.SetActive(false); for (int i = 0; i < DeadModel.dungeonKillArray.Length; i++) { if(DeadModel.dungeonKillArray[i] == PlayerDatas.Instance.baseData.MapID) { dieDesText.gameObject.SetActive(true); string msg = StringUtility.Contact(Language.Get("AncientBattlefield_Text_1", mapConfig.Name, UIHelper.ServerStringTrim(DeadModel.killerName))); dieDesText.text = msg; } } } protected override void OnAfterOpen() { this.transform.SetAsLastSibling(); } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion public void RefreshTime(int time) { _timeDownText.text = time.ToString(); _ringImage.fillAmount = (float)time / DeadModel.duplicatesRebornTime; if (time <= 0) { DeadModel.SendRebornQuest(0); StartCoroutine(CheckPlayerIsReborn()); } } IEnumerator CheckPlayerIsReborn() { questTimes = 0; while (questTimes < 5) { yield return new WaitForSeconds(1); questTimes += 1; if (DeadModel.playerIsDie) { DeadModel.SendRebornQuest(0); } else { questTimes = 5; } } } private void CloseWin() { Close(); } } }