//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, August 11, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class BattleHintWin : Window { [SerializeField] RectTransform m_ContainerBattleHint; [SerializeField] RectTransform m_ContainerKing; [SerializeField] RectTransform m_ContainerEnemy; [SerializeField] RectTransform m_ContainerAncientRemind; [SerializeField] ScaleTween m_BattleHintTween; [SerializeField, Header("保留时间")] float m_KeepTime = 2f; [SerializeField] RectTransform m_ContainerEvenKill; [SerializeField] Image m_EvenKillSign; [SerializeField] Image m_KillSign; [SerializeField] ScaleTween m_EvenKillTween; [SerializeField] Text m_EvenKill; [SerializeField, Header("保留时间")] float m_EvenKillTime = 2f; bool isBattleHint = false; bool isEvenKill = false; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { m_ContainerBattleHint.SetActive(false); m_ContainerEvenKill.SetActive(false); isBattleHint = false; isEvenKill = false; } protected override void OnActived() { base.OnActived(); DisplayBattleHint(); DisplayEvenKill(); BattleHint.Instance.battleHintUpdate += BattleHintUpdate; BattleHint.Instance.evenKillUpdate += EvenKillUpdate; WindowCenter.Instance.windowBeforeOpenEvent += WindowBeforeOpenEvent; } protected override void OnAfterOpen() { } protected override void OnPreClose() { StopAllCoroutines(); BattleHint.Instance.Clear(); BattleHint.Instance.battleHintUpdate -= BattleHintUpdate; BattleHint.Instance.evenKillUpdate -= EvenKillUpdate; WindowCenter.Instance.windowBeforeOpenEvent -= WindowBeforeOpenEvent; } protected override void OnAfterClose() { } #endregion private void WindowBeforeOpenEvent(Window window) { if (window is TreasureBaseWin || window is TreasureSelectWin) { CloseImmediately(); } } private void BattleHintUpdate() { if (!isBattleHint) { DisplayBattleHint(); } } void DisplayBattleHint() { var ancientType = 0; if (BattleHint.Instance.TryGetBattleHint(out ancientType)) { isBattleHint = true; m_ContainerKing.SetActive(false); m_ContainerEnemy.SetActive(false); m_ContainerAncientRemind.SetActive(false); m_ContainerBattleHint.SetActive(true); switch (ancientType) { case 1: m_ContainerKing.SetActive(true); m_BattleHintTween.SetEndState(); OnBattleHintTweenComplete(); break; case 2: m_ContainerEnemy.SetActive(true); m_BattleHintTween.SetEndState(); OnBattleHintTweenComplete(); break; case 3: m_ContainerAncientRemind.SetActive(true); m_BattleHintTween.SetStartState(); m_BattleHintTween.Play(OnBattleHintTweenComplete); break; } } } void OnBattleHintTweenComplete() { StartCoroutine(Co_Complete()); } private void EvenKillUpdate() { if (!isEvenKill) { DisplayEvenKill(); } } void DisplayEvenKill() { string evenKill = string.Empty; if (BattleHint.Instance.TryGetEvenKill(out evenKill)) { isEvenKill = true; m_EvenKill.text = evenKill; bool firstKill = evenKill.Equals("1"); m_KillSign.SetActive(firstKill); m_EvenKillSign.SetActive(!firstKill); m_ContainerEvenKill.SetActive(true); m_EvenKillTween.SetStartState(); m_EvenKillTween.Play(OnEvenKillComplete); } } private void OnEvenKillComplete() { StartCoroutine(Co_EvenKill()); } IEnumerator Co_Complete() { yield return WaitingForSecondConst.GetWaitForSeconds(m_KeepTime); isBattleHint = false; m_ContainerBattleHint.SetActive(false); DisplayBattleHint(); } IEnumerator Co_EvenKill() { yield return WaitingForSecondConst.GetWaitForSeconds(m_EvenKillTime); isEvenKill = false; m_ContainerEvenKill.SetActive(false); DisplayEvenKill(); } } }