//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 08, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class AllianceBossEntranceWin : Window { [SerializeField] AllianceBossBehaviour[] m_AllianceBosses; [SerializeField] Text m_OpenTime; float timer = 0f; AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } MapModel mapModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { for (int i = 0; i < m_AllianceBosses.Length; i++) { m_AllianceBosses[i].Display(i); } DisplayTime(); mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID); GlobalTimeEvent.Instance.secondEvent += PerSecond; } protected override void OnAfterOpen() { } protected override void OnPreClose() { for (int i = 0; i < m_AllianceBosses.Length; i++) { m_AllianceBosses[i].Dispose(); } GlobalTimeEvent.Instance.secondEvent -= PerSecond; } protected override void OnAfterClose() { } protected override void LateUpdate() { timer += Time.deltaTime; if (timer >= 5f) { timer = 0f; mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID); } } #endregion private void PerSecond() { DisplayTime(); } void DisplayTime() { DailyQuestOpenTime dailyQuestOpenTime; if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.AllianceBoss, out dailyQuestOpenTime)) { if (dailyQuestOpenTime.InOpenTime()) { var seconds = 0; HourMinute hourMinute; if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute)) { var endTime = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day, hourMinute.hourEnd, hourMinute.minuteEnd, 0); seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds); seconds = Mathf.Max(0, seconds); } var timeSpan = new TimeSpan(TimeSpan.TicksPerSecond * seconds); m_OpenTime.text = Language.Get("RidingPetQuestRemainTime", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); m_OpenTime.color = UIHelper.GetUIColor(TextColType.Green, true); //m_OpenTime.text = Language.Get("AllianceBoss_3", TimeUtility.SecondsToHMS(seconds)); } else { var seconds = dailyQuestOpenTime.GetNextSessionSurplusTime(); var timeSpan = new TimeSpan(TimeSpan.TicksPerSecond * seconds); // m_OpenTime.text = Language.Get("AllianceBoss_2", TimeUtility.SecondsToHMS(seconds)); m_OpenTime.text = Language.Get("RidingPetQuestStartCountDown", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); m_OpenTime.color = UIHelper.GetUIColor(TextColType.Red, true); } } } } }