//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, May 08, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class BossNotifyWin : Window { [SerializeField] RectTransform m_ContainerType1; [SerializeField] ScaleTween m_ScaleTween1; [SerializeField] RichText m_NotifyContent1; [SerializeField] Image m_NotifyBottom1; [SerializeField] Image m_ArtNotify; [SerializeField] RectTransform m_ContainerType2; [SerializeField] PositionTween m_PositionTween2; [SerializeField] Image m_BossWord; [SerializeField] Image m_BossIcon; [SerializeField] RectTransform m_ContainerType3; [SerializeField] RichText m_NotifyContent3; float timer = 0; bool coolDown = false; float totalTime = 0; int cacheSkillId = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { cacheSkillId = 0; m_ContainerType1.gameObject.SetActive(false); m_ScaleTween1.SetStartState(); m_ContainerType2.gameObject.SetActive(false); m_PositionTween2.SetStartState(); m_ContainerType3.gameObject.SetActive(false); BossNotify.releaseNotifyEvent += ReleaseNotifyEvent; } protected override void OnAfterOpen() { BossNotify.OnNotifyEvent += OnNotifyEvent; DisplayConstNotify(); Display(); } protected override void OnPreClose() { BossNotify.OnNotifyEvent -= OnNotifyEvent; BossNotify.releaseNotifyEvent -= ReleaseNotifyEvent; } protected override void OnAfterClose() { BossNotify.constDisplaySkill = 0; } protected override void LateUpdate() { base.LateUpdate(); if (coolDown) { timer += Time.deltaTime; if (timer > totalTime) { m_ContainerType1.gameObject.SetActive(false); m_ContainerType2.gameObject.SetActive(false); BossNotify.SetNotifyComplete(cacheSkillId); cacheSkillId = 0; Display(); } } } #endregion public void Display() { coolDown = false; timer = 0; var _skillId = BossNotify.Request(); if (_skillId != 0) { var _bossNotifyCfg = Config.Instance.Get(_skillId); totalTime = (float)_bossNotifyCfg.time / 1000; cacheSkillId = _bossNotifyCfg.SkillID; switch (_bossNotifyCfg.mode) { case 1: m_ContainerType1.gameObject.SetActive(true); m_ScaleTween1.SetStartState(); m_ScaleTween1.Play(OnScaleTweenComplelte); bool _artNotify = !_bossNotifyCfg.art.Equals(string.Empty); m_NotifyContent1.gameObject.SetActive(!_artNotify); m_NotifyBottom1.gameObject.SetActive(!_artNotify); m_ArtNotify.gameObject.SetActive(_artNotify); if (_artNotify) { m_ArtNotify.SetSprite(_bossNotifyCfg.art); m_ArtNotify.SetNativeSize(); } else { m_NotifyContent1.text = _bossNotifyCfg.Content; } break; case 2: BossNotify.SetNofityStart(_bossNotifyCfg.SkillID); m_ContainerType2.gameObject.SetActive(true); m_PositionTween2.SetStartState(); m_PositionTween2.Play(OnPositionTweenComplete); if (_bossNotifyCfg.bossIcon.Length > 1) { m_BossIcon.SetSprite(_bossNotifyCfg.bossIcon[0]); m_BossWord.SetSprite(_bossNotifyCfg.bossIcon[1]); } else { DebugEx.LogFormat("错误的Boss信息提示配置{0}", _bossNotifyCfg.SkillID); } m_BossIcon.SetNativeSize(); break; } } else { if (!m_ContainerType3.gameObject.activeSelf) { CloseImmediately(); } } } public void DisplayConstNotify() { if (BossNotify.constDisplaySkill != 0) { m_ContainerType3.gameObject.SetActive(true); var _cfg = Config.Instance.Get(BossNotify.constDisplaySkill); m_NotifyContent3.text = _cfg.Content; } } private void OnNotifyEvent() { DisplayConstNotify(); if (!m_ContainerType1.gameObject.activeSelf && !m_ContainerType2.gameObject.activeSelf) { Display(); } } private void ReleaseNotifyEvent(int _id) { if (_id == BossNotify.constDisplaySkill) { m_ContainerType3.gameObject.SetActive(false); if (!m_ContainerType2.gameObject.activeSelf && !m_ContainerType3.gameObject.activeSelf) { CloseImmediately(); } } } private void OnScaleTweenComplelte() { coolDown = true; } private void OnPositionTweenComplete() { coolDown = true; } } }