From 9921b8a0a3335a59658041f7702c2c78b3bf64ab Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 10 六月 2026 17:58:36 +0800
Subject: [PATCH] 588 公会信息界面从仅显示会长信息改成滚动条显示所有成员信息,同步A519封包

---
 Main/System/Guild/GuildPreviewWin.cs |   97 +++++++++++++++++++++++++++---------------------
 1 files changed, 55 insertions(+), 42 deletions(-)

diff --git a/Main/System/Guild/GuildPreviewWin.cs b/Main/System/Guild/GuildPreviewWin.cs
index bb219c9..893905a 100644
--- a/Main/System/Guild/GuildPreviewWin.cs
+++ b/Main/System/Guild/GuildPreviewWin.cs
@@ -1,5 +1,6 @@
 using System.Collections;
 using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -16,20 +17,24 @@
     [SerializeField] Text guildNumText; //鍔犲叕浼氱紪鍙�
     [SerializeField] Button copyBtn;
     [SerializeField] Text noticeText; //鍏憡
-    [SerializeField] AvatarCell leaderAvatar;
-    [SerializeField] OfficialTitleCell leaderTitle;
-    [SerializeField] Text leaderLevelText;
-    [SerializeField] Text guildJobText;
-    [SerializeField] Text leaderNameText;
-    [SerializeField] Text leaderFightPowerText;
+
+    [SerializeField] ScrollerController scroller;
 
     [SerializeField] Button opearteBtn;
     [SerializeField] Text opearteBtnText;
 
 
     int guildID;
-    int leaderID;
-    int leaderServerID;
+    static bool m_ShowOpearteBtn = true;
+
+    /// <summary>
+    /// 璁剧疆鏄惁鏄剧ず鎿嶄綔鎸夐挳锛堝湪鎵撳紑鐣岄潰鍓嶈皟鐢級锛岄粯璁ゆ樉绀�
+    /// </summary>
+    public static void SetShowOpearteBtn(bool show)
+    {
+        m_ShowOpearteBtn = show;
+    }
+
     protected override void InitComponent()
     {
         opearteBtn.AddListener(() =>
@@ -45,45 +50,39 @@
             UIHelper.CopyToClipboard(guildNumText.text);
             SysNotifyMgr.Instance.ShowTip("GuildSys8");
         });
-
-        leaderAvatar.AddListener(() =>
-        {
-            OtherPlayerDetailManager.Instance.ViewPlayerDetail(leaderID, leaderServerID);
-        });
     }
 
     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.guildsDict.ContainsKey(guildID))
+
+        if (GuildManager.Instance.viewGuildsDict.ContainsKey(guildID))
         {
-            guildInfo = GuildManager.Instance.guildsDict[guildID];
-        }
-        else
-        {
-            if (GuildManager.Instance.viewGuildsDict.ContainsKey(guildID))
-            {
-                guildInfo = GuildManager.Instance.viewGuildsDict[guildID];
-            }
+            guildInfo = GuildManager.Instance.viewGuildsDict[guildID];
         }
         if (guildInfo == null) return;
-        leaderID = guildInfo.LeaderID;
-        leaderServerID = guildInfo.ServerID;
-        OtherPlayerDetailManager.Instance.ViewPlayerDetail(leaderID, leaderServerID, (int)ViewPlayerType.viewGuildLeader);
 
         var config = FamilyConfig.Get(guildInfo.FamilyLV);
         guildEmblem.Display(guildInfo.EmblemID, guildInfo.EmblemWord, 0.7f);
@@ -92,7 +91,6 @@
         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);
-        leaderNameText.text = guildInfo.LeaderName;
         noticeText.text = string.IsNullOrEmpty(guildInfo.Broadcast) ? Language.Get("Guild_62") : guildInfo.Broadcast;
 
 
@@ -113,27 +111,42 @@
         }
         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)
     {
-        if (viewType != (int)ViewPlayerType.viewGuildLeader)
-        {
-            return;
-        }
-        if (playerID != leaderID)
-        {
-            return;
-        }
-        var leaderInfo = OtherPlayerDetailManager.Instance.GetViewPlayerData(playerID);
-
-        leaderAvatar.InitUI(AvatarHelper.GetAvatarModel(0, leaderInfo.Face, leaderInfo.FacePic));
-        leaderTitle.InitUI(leaderInfo.RealmLV, leaderInfo.TitleID);
-        leaderLevelText.text = leaderInfo.LV.ToString();
-        guildJobText.text = RichTextMsgReplaceConfig.GetRichReplace("FAMILY", 3);
-        leaderFightPowerText.text = UIHelper.ReplaceLargeArtNum(leaderInfo.FightPower);
+        RefreshMemberList();
     }
 
-}
\ No newline at end of file
+    void OnUpdateViewFamilyInfo(int familyID)
+    {
+        Display();
+    }
+
+}

--
Gitblit v1.8.0