lcy
2026-06-10 82e8a3f6ff7aaec06d1b60463a545a8bb031f546
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
 
public class GuildRankWin : UIBase
{
    [SerializeField] Transform empty;
    [SerializeField] GuildTop3Cell[] guildTop3Cells;
    [SerializeField] ScrollerController scroller;
    [SerializeField] TextEx rankText;
    [SerializeField] TextEx rankValueText;
    [SerializeField] ButtonEx serversBtn;
 
    GuildManager manager { get { return GuildManager.Instance; } }
    protected override void InitComponent()
    {
        serversBtn.AddListener(() =>
        {
            UIHelper.ShowServersPanel(GuildManager.Instance.crossServerIDList);
        });
    }
 
    protected override void OnPreOpen()
    {
        manager.OnRefreshFairyList += OnRefreshFairyList;
        scroller.OnRefreshCell += OnRefreshCell;
        GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo;
 
        manager.SendFindGuild(string.Empty, 0, manager.pageCnt);
        manager.ResetQueryParam();
        Display();
    }
 
    protected override void OnPreClose()
    {
        manager.OnRefreshFairyList -= OnRefreshFairyList;
        scroller.OnRefreshCell -= OnRefreshCell;
        GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
    }
 
    void OnUpdateViewFamilyInfo(int familyID)
    {
        UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
    }
 
    public void Display()
    {
        serversBtn.SetActive(GuildManager.Instance.zoneID != 0);
        ShowTop3();
        CreateScroller();
        ShowMyRank();
    }
 
    void ReflashScroller()
    {
        if (GuildManager.Instance.pageIndexList.Count < 4)
        {
            empty.SetActive(true);
            scroller.SetActive(false);
            return;
        }
        empty.SetActive(false);
        scroller.SetActive(true);
 
        var startCount = scroller.GetCellTotalCount();
        if (startCount > GuildManager.Instance.pageIndexList.Count - 3)
        {
            scroller.Refresh();
            startCount = 0; 
        }
        
        for (int i = startCount + 3; i < GuildManager.Instance.pageIndexList.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, i);
        }
        scroller.Restart();
    }
 
    void CreateScroller()
    {
        if (GuildManager.Instance.pageIndexList.Count < 4)
        {
            empty.SetActive(true);
            scroller.SetActive(false);
            return;
        }
        empty.SetActive(false);
        scroller.SetActive(true);
 
        scroller.Refresh();
        for (int i = 3; i < GuildManager.Instance.pageIndexList.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, i);
        }
        scroller.Restart();
    }
 
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<GuildRankCell>();
        _cell.Display(cell.index + 1);
        manager.ListenRankPage(cell.index);
    }
 
 
    void ShowTop3()
    {
        for (int i = 0; i < guildTop3Cells.Length; i++)
        {
            guildTop3Cells[i].Display(i + 1);
        }
    }
 
    void ShowMyRank()
    {
        int myFairyRank = manager.myFairyRank;
        rankText.text = Language.Get("GuildRank04", myFairyRank > 0 ? myFairyRank : Language.Get("L1045"));
        rankValueText.SetActive(PlayerDatas.Instance.fairyData.HasFairy && myFairyRank > 0);
        rankValueText.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.fairyData.fairy.totalFightPower);
    }
 
    void OnRefreshFairyList()
    {
        ShowTop3();
        ReflashScroller();
        ShowMyRank();
    }
}