//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, April 09, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DungeonAdventureVictoryWin : Window { [SerializeField] Transform m_ContainerPoivt; [SerializeField] DungeonRewardBehavour[] m_Items; [SerializeField] Button m_Exit; [SerializeField] Text m_ExitTimer; const float totalTime = 8f; float timer = 0f; float clockTimer = 0f; DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Exit.AddListener(ExitDungeon); } protected override void OnPreOpen() { m_ContainerPoivt.SetActive(false); timer = 0f; clockTimer = 0f; } protected override void OnActived() { base.OnActived(); StartCoroutine(Co_DelayDisplay()); } protected override void OnAfterOpen() { } protected override void OnPreClose() { AdventureStage.Instance.Exit(); } protected override void OnAfterClose() { } #endregion protected override void LateUpdate() { clockTimer += Time.deltaTime; if (clockTimer >= 0.5f) { clockTimer = 0f; var seconds = Mathf.CeilToInt(totalTime - timer); DrawExitTimer(seconds); } timer += Time.deltaTime; if (timer >= totalTime) { Close(); } } IEnumerator Co_DelayDisplay() { yield return WaitingForSecondConst.WaitMS3000; Display(); } void Display() { m_ContainerPoivt.SetActive(true); DisplayExit(); DisplayItems(); } void DisplayExit() { m_Exit.SetActive(true); var seconds = Mathf.CeilToInt(totalTime - timer); DrawExitTimer(seconds); } void DrawExitTimer(int seconds) { m_ExitTimer.text = Language.Get("DungeonVictoryWin_Btn_Exit_1", Mathf.Clamp(seconds, 0, int.MaxValue)); } void DisplayItems() { var result = dungeonModel.dungeonResult; for (int i = 0; i < m_Items.Length; i++) { if (result.itemInfo != null && i < result.itemInfo.Length) { var serverItem = result.itemInfo[i]; m_Items[i].SetActive(true); m_Items[i].Display(new Item(serverItem.ItemID, serverItem.Count)); } else { m_Items[i].SetActive(false); } } } private void ExitDungeon() { Close(); } } }