using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 公会大厅 /// 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(); }); guildLVBtn.AddListener(() => { // UIManager.Instance.OpenWindow(); }); noticeBtn.AddListener(() => { var needLV = GuildManager.Instance.GetNeedGuildJobLV((int)GuildFuncType.PublishNotice); if (PlayerDatas.Instance.fairyData.mine.FmLV >= needLV) { // UIManager.Instance.OpenWindow(); } }); donateBtn.AddListener(() => { UIManager.Instance.OpenWindow(); }); } 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); } }