//-------------------------------------------------------- 
 | 
//    [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<DungeonModel>(); } } 
 | 
  
 | 
        #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.SetActive(true); 
 | 
                } 
 | 
  
 | 
                timer += Time.deltaTime; 
 | 
                if (timer > 1f) 
 | 
                { 
 | 
                    timer -= 1f; 
 | 
                    UpdateExpelCoolDown(); 
 | 
                } 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                if (elderGodBBEndTime > Time.time) 
 | 
                { 
 | 
                    if (!m_ElderGodBBContainer.gameObject.activeInHierarchy) 
 | 
                    { 
 | 
                        m_ElderGodBBContainer.SetActive(true); 
 | 
                    } 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
  
 | 
                    if (m_ElderGodBBContainer.gameObject.activeInHierarchy) 
 | 
                    { 
 | 
                        m_ElderGodBBContainer.SetActive(false); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void DisplayAnger() 
 | 
        { 
 | 
            m_AngerSlider.value = (float)model.mission.score / GeneralDefine.elderGodAreaAngerTotal; 
 | 
            m_AngerValue.text = StringUtility.Contact(model.mission.score, "/", GeneralDefine.elderGodAreaAngerTotal); 
 | 
  
 | 
            if (model.mission.score == 100) 
 | 
            { 
 | 
                timer = 1f; 
 | 
                isExpel = true; 
 | 
                UpdateExpelCoolDown(); 
 | 
            } 
 | 
            else if (angerBuf == 0) 
 | 
            { 
 | 
                m_ElderGodBBContent.text = Language.Get("ElderGodBB1"); 
 | 
                elderGodBBEndTime = Time.time + GeneralDefine.elderGodTalkingTime; 
 | 
            } 
 | 
            else if (angerBuf < 75 && model.mission.score >= 75) 
 | 
            { 
 | 
                m_ElderGodBBContent.text = Language.Get("ElderGodBB4"); 
 | 
                elderGodBBEndTime = Time.time + GeneralDefine.elderGodTalkingTime; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                if (model.mission.KillBOSS == GeneralDefine.elderGodBigBoss) 
 | 
                { 
 | 
                    m_ElderGodBBContent.text = Language.Get("ElderGodBB3"); 
 | 
                    elderGodBBEndTime = Time.time + GeneralDefine.elderGodTalkingTime; 
 | 
                } 
 | 
                else if (model.mission.KillBOSS != 0) 
 | 
                { 
 | 
                    m_ElderGodBBContent.text = Language.Get("ElderGodBB2"); 
 | 
                    elderGodBBEndTime = Time.time + GeneralDefine.elderGodTalkingTime; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            angerBuf = model.mission.score; 
 | 
        } 
 | 
  
 | 
        private void UpdateExpelCoolDown() 
 | 
        { 
 | 
            var endTime = model.GetCoolDownEndTime(DungeonCoolDownType.ElderGodAreaDeadTime); 
 | 
            var seconds = (endTime - TimeUtility.ServerNow).TotalSeconds; 
 | 
            m_ElderGodBBContent.text = Language.Get("ElderGodBB5", Mathf.Clamp((int)seconds, 0, int.MaxValue)); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |