using System; using System.Collections; using System.Collections.Generic; 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; [SerializeField] Text buffText; PlayerDeadModel _deadModel; PlayerDeadModel DeadModel { get { return _deadModel ?? (_deadModel = ModelCenter.Instance.GetModel()); } } public const int ElderBattleMapID = 31160; //上古战场地图Id 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; int curMapId = PlayerDatas.Instance.baseData.MapID; MapConfig mapConfig = Config.Instance.Get(curMapId); dieDesText.gameObject.SetActive(false); buffText.gameObject.SetActive(curMapId == ElderBattleMapID); if (curMapId == ElderBattleMapID) { List buffIds = new List(); StatusMgr.Instance.GetBuffIds(PlayerDatas.Instance.PlayerId, ref buffIds); var skillConfigs = SkillConfig.GetSkillActConfigs(0,0,DeadModel.deadBuffId); string skillName = string.Empty; int buffLv = 0; bool isMaxBuff = false; if(buffIds.Count > 0) { for(int i = 0; i < buffIds.Count; i++) { int buffId = buffIds[i]; SkillConfig skillConfig = Config.Instance.Get(buffId); if(skillConfig.SkillTypeID == DeadModel.deadBuffId) { buffLv = skillConfig.SkillLV + 1; isMaxBuff = buffLv > DeadModel.maxDeadBuffLV ? true : false; break; } } } if(skillConfigs != null && skillConfigs.Count > 0) { SkillConfig skillConfig = skillConfigs[0]; skillName = skillConfig.SkillName; } buffText.text = Language.Get("AncientBattlefield_Text_2",skillName); buffText.gameObject.SetActive(!isMaxBuff); } for (int i = 0; i < DeadModel.dungeonKillArray.Length; i++) { if(DeadModel.dungeonKillArray[i] == curMapId) { 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() { StopAllCoroutines(); } 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(); } } }