//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, December 26, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DemonJarBossLifeBarWin : Window { const long BOSSHP_TOTAL = 1000000000; [SerializeField] BossLifeBar m_BossLifeBar; TargetBriefInfo.MonsterInfo bossInfo; DungeonModel model { 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.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.0001d * BOSSHP_TOTAL); currentHp = currentHp - deltaHp; if (currentHp <= 0) { CloseClick(); } } if (TargetBriefInfo.bossInfo != bossInfo) { bossInfo = TargetBriefInfo.bossInfo; if (bossInfo.instanceId != 0) { if (inited) { RefreshBossLifeBar(); } else { InitBossLifeBar(); } } } } #endregion private void OnUpdateMission() { if (inited) { UpdateServerRemainHP(); } else { if (model.mission.remainHPPer > 0) { InitBossLifeBar(); } } } void InitBossLifeBar() { var config = NPCConfig.Get(TargetBriefInfo.bossInfo.npcId); if (config!=null) { m_BossLifeBar.SetActive(true); currentHp = (long)(model.mission.remainHPPer * 0.000001d * BOSSHP_TOTAL); m_BossLifeBar.SetBaseInfo(TargetBriefInfo.bossInfo.npcId, (ulong)currentHp, BOSSHP_TOTAL, config.NPCLV); inited = true; } } private void UpdateServerRemainHP() { currentHp = (long)(model.mission.remainHPPer * 0.000001d * BOSSHP_TOTAL); } public void RefreshBossLifeBar() { m_BossLifeBar.Show((ulong)currentHp, BOSSHP_TOTAL); } } }