//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, April 18, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class MissionActWin : Window { [SerializeField] ScrollerController m_Controller; [SerializeField] Text actTime; [SerializeField] Text roundText; MissionActModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { m_Controller.OnRefreshCell += OnRefreshCell; model.UpdateMissionEvent += UpdateMissionEvent; GlobalTimeEvent.Instance.secondEvent += secondEvent; DisplayScroll(); secondEvent(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { m_Controller.OnRefreshCell -= OnRefreshCell; model.UpdateMissionEvent -= UpdateMissionEvent; GlobalTimeEvent.Instance.secondEvent -= secondEvent; } protected override void OnAfterClose() { } #endregion void DisplayScroll() { m_Controller.Refresh(); OperationMissionAct missionAct; OperationTimeHepler.Instance.TryGetOperation(MissionActModel.operaType, out missionAct); var keys = missionAct.missionInfo.Keys.ToList(); keys.Sort(CmpState); for (int i = 0; i < keys.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, keys[i]); } m_Controller.Restart(); m_Controller.m_Scorller.RefreshActiveCellViews(); roundText.text = StringUtility.Contact(Language.Get("ActMission1"), model.roundNum, "/", missionAct.roundMax); } //可领取 - 未完成 - 已领取 int CmpState(int id1, int id2) { int state1 = model.GetMissionAwardState(id1); int state2 = model.GetMissionAwardState(id2); if (state1 == 1) state1 = 0; else if (state1 == 0) state1 = 1; if (state2 == 1) state2 = 0; else if (state2 == 0) state2 = 1; if (state1 != state2) return state1.CompareTo(state2); return id1.CompareTo(id2); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { if (type != ScrollerDataType.Header) return; var _cell = cell as MissionActCell; _cell.Display(_cell.index); } void UpdateMissionEvent(bool isNewRound) { OperationMissionAct missionAct; OperationTimeHepler.Instance.TryGetOperation(MissionActModel.operaType, out missionAct); if (isNewRound) { DisplayScroll(); } else { m_Controller.m_Scorller.RefreshActiveCellViews(); } roundText.text = StringUtility.Contact(Language.Get("ActMission1"), model.roundNum, "/", missionAct.roundMax); } void secondEvent() { OperationMissionAct missionAct; OperationTimeHepler.Instance.TryGetOperation(MissionActModel.operaType, out missionAct); actTime.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToHMS(missionAct.GetResetSurplusTime())); } } }