| New file |
| | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Tuesday, August 28, 2018
|
| | | //--------------------------------------------------------
|
| | |
|
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using TableConfig;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | |
|
| | | namespace Snxxz.UI {
|
| | |
|
| | | public class FairyGrabBossHintWin : Window
|
| | | {
|
| | | [SerializeField] Text m_MapName;
|
| | | [SerializeField] Text m_BossName;
|
| | | [SerializeField] RectTransform m_ContainerKilling;
|
| | | [SerializeField] RectTransform m_ContainerKilled;
|
| | | [SerializeField] FairyGrabBossRankBehaviour[] m_RankBehaviours;
|
| | | [SerializeField] Text m_Progress;
|
| | | [SerializeField] Text m_SurplusTime;
|
| | |
|
| | | float m_Timer = 0f;
|
| | | const float Interval = 10f;
|
| | |
|
| | | int bossId = 0;
|
| | | uint objId = 0;
|
| | |
|
| | | FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void AddListeners()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | | {
|
| | | m_Timer = 0f;
|
| | | var list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightBoss);
|
| | | var bossId = 0;
|
| | | if (list != null)
|
| | | {
|
| | | for (int i = 0; i < list.Count; i++)
|
| | | {
|
| | | GA_NpcFightBoss bossActor = list[i] as GA_NpcFightBoss;
|
| | | if (bossActor != null && model.bosses.Contains(bossActor.NpcConfig.NPCID))
|
| | | {
|
| | | bossId = bossActor.NpcConfig.NPCID;
|
| | | objId = bossActor.ServerInstID;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | if (bossId != 0)
|
| | | {
|
| | | model.QueryGrabBossHurt(bossId, 0, objId);
|
| | | model.QueryGrabBossProgress();
|
| | | GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
| | | model.bossProgressUpdate += BossProgressUpdate;
|
| | | model.bossHurtUpdate += BossHurtUpdate;
|
| | | DisplayAreaInfo();
|
| | | DisplayTimer();
|
| | | DisplayProgress();
|
| | | DisplayRanks();
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void OnAfterOpen()
|
| | | {
|
| | | if (bossId == 0)
|
| | | {
|
| | | CloseImmediately();
|
| | | model.RecheckGrabBoss();
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void OnPreClose()
|
| | | {
|
| | | GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
|
| | | model.bossProgressUpdate -= BossProgressUpdate;
|
| | | model.bossHurtUpdate -= BossHurtUpdate;
|
| | | }
|
| | |
|
| | | protected override void OnAfterClose()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void LateUpdate()
|
| | | {
|
| | | base.LateUpdate();
|
| | | m_Timer += Time.deltaTime;
|
| | | if (m_Timer >= Interval && bossId != 0)
|
| | | {
|
| | | m_Timer = 0f;
|
| | | model.QueryGrabBossHurt(bossId, 0, objId);
|
| | | model.QueryGrabBossProgress();
|
| | | }
|
| | | }
|
| | | #endregion
|
| | |
|
| | | private void DisplayAreaInfo()
|
| | | {
|
| | | var mapId = PlayerDatas.Instance.baseData.MapID;
|
| | | var mapConfig = Config.Instance.Get<MapConfig>(mapId);
|
| | | m_MapName.text = mapConfig.Name;
|
| | | var npcConfig = Config.Instance.Get<NPCConfig>(bossId);
|
| | | if (npcConfig != null)
|
| | | {
|
| | | m_BossName.text = npcConfig.charName;
|
| | | }
|
| | | }
|
| | |
|
| | | void DisplayProgress()
|
| | | {
|
| | | FairyGrabBossModel.BossProgressInfo bossProgress;
|
| | | bool killed = false;
|
| | | if (model.TryGetBossProgress(bossId, out bossProgress))
|
| | | {
|
| | | var progress = (float)bossProgress.currentHp / bossProgress.totalHp;
|
| | | m_Progress.text = StringUtility.Contact((int)progress * 100, "%");
|
| | | killed = progress >= 1;
|
| | | }
|
| | | m_ContainerKilling.gameObject.SetActive(!killed);
|
| | | m_ContainerKilled.gameObject.SetActive(killed);
|
| | | }
|
| | |
|
| | | void DisplayRanks()
|
| | | {
|
| | | FairyGrabBossModel.FairyGrabBossInfo fairyGrabBossInfo;
|
| | | FairyGrabBossModel.BossProgressInfo bossProgress;
|
| | | var index = 0;
|
| | | if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo)
|
| | | && model.TryGetBossProgress(bossId, out bossProgress))
|
| | | {
|
| | | for (int i = 0; i < m_RankBehaviours.Length; i++)
|
| | | {
|
| | | if (i < fairyGrabBossInfo.hurtInfos.Count)
|
| | | {
|
| | | var hurtInfo = fairyGrabBossInfo.hurtInfos[i];
|
| | | var percent = (int)((float)hurtInfo.totalHurt / bossProgress.totalHp) * 100;
|
| | | m_RankBehaviours[i].Display(hurtInfo.HurtName, percent);
|
| | | }
|
| | | }
|
| | | }
|
| | | for (int i = index; i < m_RankBehaviours.Length; i++)
|
| | | {
|
| | | m_RankBehaviours[i].Display(string.Empty, 0);
|
| | | }
|
| | | }
|
| | |
|
| | | private void DisplayTimer()
|
| | | {
|
| | | var seconds = model.surplusSeconds;
|
| | | if (seconds > 0)
|
| | | {
|
| | | m_SurplusTime.text = TimeUtility.SecondsToDHMSCHS(seconds);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_SurplusTime.text = Language.Get("ActivityEnd");
|
| | | }
|
| | | }
|
| | |
|
| | | private void BossProgressUpdate(int _id)
|
| | | {
|
| | | if (_id == bossId)
|
| | | {
|
| | | DisplayProgress();
|
| | | DisplayRanks();
|
| | | }
|
| | | }
|
| | |
|
| | | private void BossHurtUpdate(int id, int type)
|
| | | {
|
| | | if (id == bossId && type == 0)
|
| | | {
|
| | | DisplayRanks();
|
| | | }
|
| | | }
|
| | |
|
| | | private void SecondEvent()
|
| | | {
|
| | | DisplayTimer();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|