少年修仙传客户端代码仓库
lcy
2025-05-08 1314c3b3c14cd520bbb8569b5f98d68933a22cd3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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<FairySiegeActModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
 
        #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<FairySiegeBaseMemberCell>();
            _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();
        }
    }
}