//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, November 13, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class ElderGodAngerWin : Window { [SerializeField] Slider m_AngerSlider; [SerializeField] Text m_AngerValue; [SerializeField] RectTransform m_ElderGodBBContainer; [SerializeField] Text m_ElderGodBBContent; [SerializeField] UIEffect m_AngerEffect; [SerializeField] UIEffect m_BossHeadEffect; int angerBuf = 0; bool isExpel = false; float elderGodBBEndTime = 0f; float timer = 0; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { angerBuf = 0; isExpel = false; DisplayAnger(); model.updateMissionEvent += DisplayAnger; } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.updateMissionEvent -= DisplayAnger; } protected override void OnAfterClose() { } #endregion protected override void OnActived() { base.OnActived(); m_AngerEffect.Play(); m_BossHeadEffect.Play(); } protected override void LateUpdate() { base.LateUpdate(); if (isExpel) { if (!m_ElderGodBBContainer.gameObject.activeInHierarchy) { m_ElderGodBBContainer.gameObject.SetActive(true); } timer += Time.deltaTime; if (timer > 1f) { timer -= 1f; UpdateExpelCoolDown(); } } else { if (elderGodBBEndTime > Time.time) { if (!m_ElderGodBBContainer.gameObject.activeInHierarchy) { m_ElderGodBBContainer.gameObject.SetActive(true); } } else { if (m_ElderGodBBContainer.gameObject.activeInHierarchy) { m_ElderGodBBContainer.gameObject.SetActive(false); } } } } private void DisplayAnger() { m_AngerSlider.value = (float)model.mission.score / GeneralConfig.Instance.elderGodAreaAngerTotal; m_AngerValue.text = StringUtility.Contact(model.mission.score, "/", GeneralConfig.Instance.elderGodAreaAngerTotal); if (model.mission.score == 100) { timer = 1f; isExpel = true; UpdateExpelCoolDown(); } else if (angerBuf == 0) { m_ElderGodBBContent.text = Language.Get("ElderGodBB1"); elderGodBBEndTime = Time.time + GeneralConfig.Instance.elderGodTalkingTime; } else if (angerBuf < 75 && model.mission.score >= 75) { m_ElderGodBBContent.text = Language.Get("ElderGodBB4"); elderGodBBEndTime = Time.time + GeneralConfig.Instance.elderGodTalkingTime; } else { if (model.mission.KillBOSS == GeneralConfig.Instance.elderGodBigBoss) { m_ElderGodBBContent.text = Language.Get("ElderGodBB3"); elderGodBBEndTime = Time.time + GeneralConfig.Instance.elderGodTalkingTime; } else if (model.mission.KillBOSS != 0) { m_ElderGodBBContent.text = Language.Get("ElderGodBB2"); elderGodBBEndTime = Time.time + GeneralConfig.Instance.elderGodTalkingTime; } } angerBuf = model.mission.score; } private void UpdateExpelCoolDown() { var endTime = model.GetDungeonCoolDownEndTime(DungeonCoolDownType.ElderGodAreaDeadTime); var seconds = (endTime - DateTime.Now).TotalSeconds; m_ElderGodBBContent.text = Language.Get("ElderGodBB5", Mathf.Clamp((int)seconds, 0, int.MaxValue)); } } }