using System.Linq; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeBaseMemberWin : Window { [SerializeField] FairySiegeStarGroup memberStarGroup; [SerializeField] FairySiegeBaseMemberItem myInfo; [SerializeField] ScrollerController scrMember; [SerializeField] TextEx txtAllHP; //总生命 [SerializeField] TextEx txtBaseHP; //基础生命 [SerializeField] TextEx txtCombatantCnt; //参战人数 FairySiegeActModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Build-in protected override void AddListeners() { } protected override void BindController() { } protected override void OnPreOpen() { scrMember.OnRefreshCell += OnRefreshCell; Display(); } protected override void OnPreClose() { scrMember.OnRefreshCell -= OnRefreshCell; } protected override void OnAfterOpen() { CreateScroller(); } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index); var list = scrMember.GetActiveCellViews(); bool hasMyPlayerID = false; foreach (var item in list) { int playerID = (int)item.index; if (playerID == PlayerDatas.Instance.PlayerId) { hasMyPlayerID = true; break; } } myInfo.SetActive(!hasMyPlayerID); } private void Display() { int combatantCnt = model.campMemberDict == null ? 0 : model.campMemberDict.Count; int JoinFamilyCnt = model.operationCrossAct == null ? 0 : model.operationCrossAct.JoinFamilyCnt; txtCombatantCnt.text = Language.Get("FairySiege060", combatantCnt, JoinFamilyCnt); txtBaseHP.text = Language.Get("FairySiege061", UIHelper.ReplaceLargeNum(model.myCityHPBase)); txtAllHP.text = Language.Get("FairySiege063", UIHelper.ReplaceLargeNum(model.myCityHPMax)); memberStarGroup.Display(model.myCampLV); if (model.campMemberDict != null && model.campMemberDict.TryGetValue(PlayerDatas.Instance.PlayerId, out var info)) { myInfo.Display(info); } } private void CreateScroller() { scrMember.Refresh(); if (model.campMemberDict != null) { var list = model.campMemberDict.Keys.ToList(); list.Sort((a, b) => { ulong fightPowerA = model.campMemberDict[a].FightPower; ulong fightPowerB = model.campMemberDict[b].FightPower; return fightPowerB.CompareTo(fightPowerA); }); foreach (var item in list) { scrMember.AddCell(ScrollerDataType.Header, (int)item); } } scrMember.Restart(); } } }