//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, May 03, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using TableConfig; namespace Snxxz.UI { public class DungeonBossBriefInfoBehaviour : MonoBehaviour { [SerializeField] Button m_MoveTo; [SerializeField] Text m_Level; [SerializeField] TimerBehaviour m_RebornTime; [SerializeField] Text m_Alive; [SerializeField] Text m_RebornAtOnce; int bossId = 0; FindPreciousModel model { get { return ModelCenter.Instance.GetModel(); } } Action onMoveToBoss; public void Display(int _bossId, Action _onMoveToBoss) { bossId = _bossId; onMoveToBoss = _onMoveToBoss; var config = Config.Instance.Get(bossId); m_Level.text = Language.Get("Z1024", config.NPCLV); OnBossInfoUpdate(bossId); model.bossInfoUpdateEvent += OnBossInfoUpdate; m_MoveTo.RemoveAllListeners(); m_MoveTo.AddListener(MoveToNpc); } public void Dispose() { onMoveToBoss = null; m_MoveTo.RemoveAllListeners(); model.bossInfoUpdateEvent -= OnBossInfoUpdate; } private void OnBossInfoUpdate(int _bossId) { if (bossId != _bossId) { return; } FindPreciousModel.BossInfo bossInfo; if (model.TryGetBossInfo(bossId, out bossInfo)) { if (!bossInfo.IsBossAlive()) { m_RebornTime.Begin(bossInfo.refreshTime); } else { m_RebornTime.gameObject.SetActive(false); } } else { m_RebornTime.gameObject.SetActive(false); } } private void LateUpdate() { FindPreciousModel.BossInfo bossInfo; if (model.TryGetBossInfo(bossId, out bossInfo)) { var isAlive = bossInfo.IsBossAlive(); if (isAlive) { if (!m_Alive.gameObject.activeInHierarchy) { m_Alive.gameObject.SetActive(true); } } else { if (m_Alive.gameObject.activeInHierarchy) { m_Alive.gameObject.SetActive(false); } } var rebornAtOnce = bossInfo.refreshTime < DateTime.Now && !isAlive; if (rebornAtOnce) { if (!m_RebornAtOnce.gameObject.activeInHierarchy) { m_RebornAtOnce.gameObject.SetActive(true); } } else { if (m_RebornAtOnce.gameObject.activeInHierarchy) { m_RebornAtOnce.gameObject.SetActive(false); } } } } private void MoveToNpc() { if (PlayerDatas.Instance.hero != null) { PlayerDatas.Instance.hero.StopPathFind(); } MapTransferUtility.Instance.MoveToNPC(bossId); if (onMoveToBoss != null) { onMoveToBoss(); } } } }