using System.Collections; using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; /// /// 查看其他公会界面 /// public class GuildPreviewWin : UIBase { [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] Text guildMemberCountText; [SerializeField] Text totalFightPowerText; [SerializeField] Text guildLevelText; [SerializeField] Text guildNameText; //加服务器信息 [SerializeField] Text guildNumText; //加公会编号 [SerializeField] Button copyBtn; [SerializeField] Text noticeText; //公告 [SerializeField] ScrollerController scroller; [SerializeField] Button opearteBtn; [SerializeField] Text opearteBtnText; int guildID; static bool m_ShowOpearteBtn = true; /// /// 设置是否显示操作按钮(在打开界面前调用),默认显示 /// public static void SetShowOpearteBtn(bool show) { m_ShowOpearteBtn = show; } protected override void InitComponent() { opearteBtn.AddListener(() => { var guildInfo = GuildManager.Instance.guildsDict[guildID]; if (guildInfo == null) return; var state = GuildManager.Instance.GetRequestState(guildInfo); GuildManager.Instance.SendApplyGuild(guildID, state == 2 ? 1 : 0); }); copyBtn.AddListener(() => { UIHelper.CopyToClipboard(guildNumText.text); SysNotifyMgr.Instance.ShowTip("GuildSys8"); }); } protected override void OnPreOpen() { GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo; OtherPlayerDetailManager.Instance.OnRevPackage += OnRevLeaderPackage; scroller.OnRefreshCell += OnRefreshMemberCell; guildID = functionOrder; opearteBtn.SetActive(m_ShowOpearteBtn); Display(); } protected override void OnPreClose() { GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo; OtherPlayerDetailManager.Instance.OnRevPackage -= OnRevLeaderPackage; scroller.OnRefreshCell -= OnRefreshMemberCell; m_ShowOpearteBtn = true; } void Display() { FairyData guildInfo = null; if (GuildManager.Instance.viewGuildsDict.ContainsKey(guildID)) { guildInfo = GuildManager.Instance.viewGuildsDict[guildID]; } if (guildInfo == null) return; 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; var state = GuildManager.Instance.GetRequestState(guildInfo); string key = ""; switch (state) { case 1: key = "Guild_17"; break; case 2: key = "Guild_21"; break; default: key = "Guild_22"; break; } opearteBtnText.text = Language.Get(key); RefreshMemberList(); } void RefreshMemberList() { var memberList = GuildManager.Instance.GetSortedMemberList(guildID); if (memberList == null) return; scroller.Refresh(); for (int i = 0; i < memberList.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); } void OnRefreshMemberCell(ScrollerDataType type, CellView cell) { if (cell is GuildPreviewCell exCell) { var memberList = GuildManager.Instance.GetSortedMemberList(guildID); if (memberList != null && cell.index >= 0 && cell.index < memberList.Count) { exCell.Display(memberList[cell.index]); } } } void OnRevLeaderPackage(int viewType, int playerID) { RefreshMemberList(); } void OnUpdateViewFamilyInfo(int familyID) { Display(); } }