//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, December 26, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class DemonJarBossLifeBarWin : Window { const long BOSSHP_TOTAL = 1000000000; [SerializeField] BossLifeBar m_BossLifeBar; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel(); } } bool inited = false; long m_CurrentHp = BOSSHP_TOTAL; long currentHp { get { return m_CurrentHp; } set { if (value <= 0) { m_CurrentHp = 0; } else { m_CurrentHp = value; } } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { inited = false; m_BossLifeBar.gameObject.SetActive(false); } protected override void OnAfterOpen() { model.updateMissionEvent += OnUpdateMission; } protected override void OnPreClose() { model.updateMissionEvent -= OnUpdateMission; } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); this.transform.SetAsFirstSibling(); } protected override void LateUpdate() { if (inited) { var deltaHp = (long)(Time.deltaTime * model.mission.hpReduceSpeed * 0.0001f * BOSSHP_TOTAL); currentHp = currentHp - deltaHp; if (currentHp <= 0) { CloseClick(); } } } #endregion private void OnUpdateMission() { if (inited) { UpdateServerRemainHP(); } else { if (model.mission.remainHPPer > 0) { InitBossLifeBar(); } } } public void InitBossLifeBar() { m_BossLifeBar.gameObject.SetActive(true); var npcConfig = Config.Instance.Get(TargetBriefInfo.selectedNpcId); currentHp = (long)(model.mission.remainHPPer * 0.01f * BOSSHP_TOTAL); m_BossLifeBar.SetBaseInfo(TargetBriefInfo.selectedNpcId, (ulong)currentHp, BOSSHP_TOTAL, npcConfig.NPCLV); inited = true; } private void UpdateServerRemainHP() { currentHp = (long)(model.mission.remainHPPer * 0.01f * BOSSHP_TOTAL); } public void RefreshBossLifeBar() { m_BossLifeBar.Show((ulong)currentHp, BOSSHP_TOTAL); } } }