hch
5 天以前 ae3cbe69348c25601cd4dc16a8abcee789954a62
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
/// <summary>
/// 公会大厅
/// </summary>
public class GuildHallWin : UIBase
{
    [SerializeField] GuildEmblemCell guildEmblem;
    [SerializeField] Text guildMemberCountText;
    [SerializeField] Text totalFightPowerText;
    [SerializeField] Button opBtn;  //管理按钮
    [SerializeField] Text guildLevelText;
    [SerializeField] Text guildNameText; //加服务器信息
    [SerializeField] Button guildLVBtn;
    [SerializeField] Image lvExpProcess;
    [SerializeField] Text expText;
    [SerializeField] Text guildNumText; //加公会编号
    [SerializeField] Button copyBtn;
    [SerializeField] Text noticeText; //公告
    [SerializeField] Button noticeBtn; //公告
    [SerializeField] ScrollerController memberScroller;
    [SerializeField] Button donateBtn;
 
 
 
    protected override void InitComponent()
    {
        copyBtn.AddListener(() =>
        {
            UIHelper.CopyToClipboard(guildNumText.text);
            SysNotifyMgr.Instance.ShowTip("GuildSys8");
        });
 
 
        opBtn.AddListener(() =>
        {
            //管理按钮
            UIManager.Instance.OpenWindow<GuildOPWin>();
        });
        guildLVBtn.AddListener(() =>
        {
            // UIManager.Instance.OpenWindow<GuildLevelUpWin>();
        });
 
        noticeBtn.AddListener(() =>
        {
            var needLV = GuildManager.Instance.GetNeedGuildJobLV((int)GuildFuncType.PublishNotice);
            if (PlayerDatas.Instance.fairyData.mine.FmLV >= needLV)
            {
                // UIManager.Instance.OpenWindow<GuildNoticeWin>();
            }
        });
 
        donateBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<GuildDonateWin>();
        });
    }
 
    protected override void OnPreOpen()
    {
        GuildManager.Instance.RequestGuildData();
 
        GuildManager.Instance.memberOPIndex = -1;
        GuildManager.Instance.MemberOPIndexEvent += OnMemberOPIndexEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        memberScroller.OnRefreshCell += OnRefreshCell;
        memberScroller.OnGetDynamicSize += OnGetDynamicSize;
        memberScroller.lockType = EnhanceLockType.KeepVertical2;
        Display();
        memberScroller.JumpIndex(0);
    }
 
    protected override void OnPreClose()
    {
        memberScroller.OnRefreshCell -= OnRefreshCell;
        GuildManager.Instance.MemberOPIndexEvent -= OnMemberOPIndexEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
        memberScroller.OnGetDynamicSize -= OnGetDynamicSize;
 
    }
 
    void Display()
    {
        var guildInfo = PlayerDatas.Instance.fairyData.fairy;
        if (guildInfo == null) return;
 
        CreateMemberScroller();
 
        var config = FamilyConfig.Get(guildInfo.FamilyLV);
        guildEmblem.Display(guildInfo.EmblemID, guildInfo.EmblemWord, 0.7f);
        guildMemberCountText.text = guildInfo.MemberCount + "/" + config.MemberMax;
        totalFightPowerText.text = UIHelper.ReplaceLargeArtNum(guildInfo.totalFightPower);
        guildLevelText.text = Language.Get("L1094") + guildInfo.FamilyLV;
        guildNameText.text = guildInfo.FamilyName + Language.Get("L1039", ServerListCenter.Instance.GetServerName(guildInfo.ServerID));
        guildNumText.text = GuildManager.Instance.EncryptGuildID(guildInfo.FamilyID);
        noticeText.text = string.IsNullOrEmpty(guildInfo.Broadcast) ? Language.Get("Guild_62") : guildInfo.Broadcast;
        lvExpProcess.fillAmount = (float)guildInfo.FamilyLVExp / config.NeedExp;
        expText.text = guildInfo.FamilyLVExp + "/" + config.NeedExp;
 
    }
 
    void OnRefreshFairyInfo()
    {
        Display();
    }
 
    bool OnGetDynamicSize(ScrollerDataType type, int index, out float height)
    {
        height = type == ScrollerDataType.Header ? 153 : 70;
        return true;
    }
 
    void CreateMemberScroller()
    {
        memberScroller.Refresh();
        for (int i = 0; i < PlayerDatas.Instance.fairyData.fairy.MemberCount; i++)
        {
            memberScroller.AddCell(ScrollerDataType.Header, i);
            if (GuildManager.Instance.memberOPIndex == i)
            {
                memberScroller.AddCell(ScrollerDataType.Normal, i);
            }
        }
        memberScroller.Restart();
    }
 
 
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        if (type == ScrollerDataType.Header)
        {
            var _cell = cell as GuildMemberCell;
            _cell.Display(cell.index);
        }
        else if (type == ScrollerDataType.Normal)
        {
            var _cell = cell as GuildMemberOPCell;
            _cell.Display(cell.index, false);
        }
    }
 
    void OnMemberOPIndexEvent()
    {
        // var lastPosition = memberScroller.m_Scorller.ScrollPosition;
        CreateMemberScroller();
        // memberScroller.m_Scorller.ScrollPosition = lastPosition + (GuildManager.Instance.memberOPIndex != -1 ? 74 : 0);
    }
}