using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeHelpWin : Window { [SerializeField] TextEx actTime; [SerializeField] ButtonEx btnGo; [SerializeField] ScrollerController scroller; [SerializeField] RichText txtRechargeNames; FairySiegeHelpModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { btnGo.SetListener(() => { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; GlobalTimeEvent.Instance.secondEvent += secondEvent; model.UpdateAwardEvent += UpdateAwardEvent; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine; secondEvent(); DisplayName(); } protected override void OnAfterOpen() { DisplayScroll(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; GlobalTimeEvent.Instance.secondEvent -= secondEvent; model.UpdateAwardEvent -= UpdateAwardEvent; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine; } protected override void OnAfterClose() { } #endregion private void UpdateAwardEvent() { DisplayName(); scroller.m_Scorller.RefreshActiveCellViews(); } private void DisplayName() { List names = new List(); for (int i = 0; i < model.rechargePlayerIDs.Count; i++) { var member = PlayerDatas.Instance.fairyData.GetMember(model.rechargePlayerIDs[i]); if (member != null) { names.Add(member.Name); } else { names.Add(Language.Get("L2024")); } } txtRechargeNames.text = StringUtility.Contact(Language.Get("FamilyRechargeTogether5"), " ", string.Join(", ", names)); } private void DisplayScroll() { OperationFamilyRechargeConn act; OperationTimeHepler.Instance.TryGetOperation(FairySiegeHelpModel.operaType, out act); int jumpIndex = -1; int jumpIndex2 = -1; // 未激活 scroller.Refresh(); for (int i = 0; i < act.needPlayers.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); int state = model.GetAwardState(i); if (jumpIndex == -1 && state == 1) { jumpIndex = i; } if (jumpIndex2 == -1 && state == 0) { jumpIndex2 = i; } } scroller.Restart(); if (jumpIndex == -1) { jumpIndex = jumpIndex2; } scroller.JumpIndex(jumpIndex); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as FairySiegeHelpCell; _cell.Display(_cell.index); } private void secondEvent() { OperationFamilyRechargeConn act; OperationTimeHepler.Instance.TryGetOperation(FairySiegeHelpModel.operaType, out act); if (act == null) return; actTime.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToHMS(act.GetResetSurplusTime())); } private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy) { CloseClick(); } } } }