//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, July 10, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class BossRebornWin : Window { [SerializeField] Button m_GotoBoss; [SerializeField] Text m_Description; [SerializeField] Slider m_Slider; [SerializeField] Text m_Progress; [SerializeField] Text m_Time; [SerializeField] Text m_RebornCount; [SerializeField] CyclicScroll m_TaskScroll; BossRebornModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_GotoBoss.AddListener(GotoKillBoss); } protected override void OnPreOpen() { m_Description.text = Language.Get("BossFHLanguage7", model.bossRebornIndegralTotal); UpdateIntegral(); UpdateCountDown(); UpdateRebornCount(); } protected override void OnAfterOpen() { model.bossTaskStateChangeEvent += OnTaskStateChange; model.bossRebornIntergralEvent += UpdateIntegral; model.bossRebornCountEvent += UpdateRebornCount; GlobalTimeEvent.Instance.secondEvent += OnPerSecond; } protected override void OnPreClose() { model.bossTaskStateChangeEvent -= OnTaskStateChange; model.bossRebornIntergralEvent -= UpdateIntegral; model.bossRebornCountEvent -= UpdateRebornCount; GlobalTimeEvent.Instance.secondEvent -= OnPerSecond; } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); UpdateActivities(); } #endregion private void GotoKillBoss() { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FindPreciousFrameFunc1); } private void UpdateIntegral() { var needPoint = model.bossRebornIndegralTotal; var progress = (float)model.bossRebornIntegral / needPoint; m_Slider.value = progress; m_Progress.text = StringUtility.Contact(model.bossRebornIntegral, "/", needPoint); } private void UpdateCountDown() { m_Time.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToDHMSCHS(model.surplusSecond)); } private void UpdateRebornCount() { m_RebornCount.text = Language.Get("BossRebornTimes", model.bossRebornCount); } private void OnTaskStateChange(int _id) { UpdateActivities(); } private void UpdateActivities() { var activities = model.GetTasks(); activities.Sort(BossRebornTask.SortCompare); m_TaskScroll.Init(activities); } private void OnPerSecond() { UpdateCountDown(); } } }