//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, May 03, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
|
|
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;
|
[SerializeField] RebornRightNowBossInfoQuery m_BossInfoQuery;
|
|
int bossId = 0;
|
FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
|
Action onMoveToBoss;
|
|
public void Display(int _bossId, Action _onMoveToBoss)
|
{
|
bossId = _bossId;
|
onMoveToBoss = _onMoveToBoss;
|
var config = NPCConfig.Get(bossId);
|
m_Level.text = Language.Get("Z1024", config.NPCLV);
|
|
m_BossInfoQuery.bossId = bossId;
|
OnBossInfoUpdate(bossId);
|
model.bossInfoUpdateEvent -= OnBossInfoUpdate;
|
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((int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds);
|
}
|
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 < TimeUtility.ServerNow && !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();
|
}
|
}
|
|
}
|
|
}
|
|
|
|