using System.Linq; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeScheduleFairyInfoWin : Window { [SerializeField] ButtonEx btnClose; [SerializeField] EmblemCell emblem; [SerializeField] ScrollerController scroller; [SerializeField] TextEx txtFairyFightPonit; [SerializeField] TextEx txtFairyId; [SerializeField] TextEx txtFairyLv; [SerializeField] TextEx txtFairyName; [SerializeField] TextEx txtMemberCnt; [SerializeField] RichText txtLtwjInfo; FairySiegeActModel model { get { return ModelCenter.Instance.GetModel(); } } #region Build-in protected override void AddListeners() { btnClose.SetListener(CloseClick); } protected override void BindController() { } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; model.OnUpdateTagFamilyInfo += OnUpdateTagFamilyInfo; scroller.Refresh(); scroller.Restart(); txtMemberCnt.text = string.Empty; emblem.InitUI(EmblemHelper.GetOtherEmblemModel(EmblemHelper.GetDefaultFamilyEmblemId())); txtFairyFightPonit.text = string.Empty; txtFairyId.text = string.Empty; txtLtwjInfo.text = string.Empty; txtFairyName.text = string.Empty; txtFairyLv.text = string.Empty; model.SendViewTagFamily(model.queryFairyId); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; model.OnUpdateTagFamilyInfo -= OnUpdateTagFamilyInfo; } protected override void OnAfterOpen() { } protected override void OnAfterClose() { } #endregion private void OnUpdateTagFamilyInfo() { Display(); CreateScroller(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index); } private void Display() { if (model.tagFamilyInfoDict == null || !model.tagFamilyInfoDict.TryGetValue(model.queryFairyId, out var info) || info == null) return; int combatantCnt = info.tagFamilyMemberDict == null ? 0 : info.tagFamilyMemberDict.Count; int JoinFamilyCnt = model.operationCrossAct == null ? 0 : model.operationCrossAct.JoinFamilyCnt; txtMemberCnt.text = Language.Get("FairySiege113", combatantCnt, JoinFamilyCnt); emblem.InitUI(EmblemHelper.GetOtherEmblemModel((int)info.EmblemID)); txtFairyFightPonit.text = UIHelper.ReplaceLargeNum(info.FightPower); txtFairyId.text = Language.Get("FairySiege111", info.FamilyID); txtLtwjInfo.text = (info.Broadcast == null || info.Broadcast.Equals(string.Empty)) ? Language.Get("GameNotice1") : info.Broadcast; txtFairyName.text = info.FamilyName; txtFairyLv.text = Language.Get("FashionDress106", info.FamilyLV); } private void CreateScroller() { scroller.Refresh(); if (model.tagFamilyInfoDict != null && model.tagFamilyInfoDict.TryGetValue(model.queryFairyId, out var info) && info != null && info.tagFamilyMemberDict != null) { var list = info.tagFamilyMemberDict.Keys.ToList(); list.Sort((a, b) => { int familyLVA = info.tagFamilyMemberDict[a].FamilyLV; int familyLVB = info.tagFamilyMemberDict[b].FamilyLV; if (familyLVA != familyLVB) { return familyLVB.CompareTo(familyLVA); } ulong fightPowerA = info.tagFamilyMemberDict[a].FightPower; ulong fightPowerB = info.tagFamilyMemberDict[b].FightPower; if (fightPowerA != fightPowerB) { return fightPowerB.CompareTo(fightPowerA); } return 0; }); for (int i = 0; i < list.Count; i++) { scroller.AddCell(ScrollerDataType.Header, (int)list[i]); } } scroller.Restart(); } } }