588 公会信息界面从仅显示会长信息改成滚动条显示所有成员信息,同步A519封包

# Conflicts:
# Main/System/BillboardRank/GuildRankCell.cs
# Main/System/BillboardRank/GuildTop3Cell.cs
# Main/System/Guild/GuildPreviewWin.cs
# Main/System/Guild/GuildViewListCell.cs
11个文件已修改
2个文件已添加
259 ■■■■ 已修改文件
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA519_tagSCTagFamilyInfo.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BillboardRank/GuildRankCell.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BillboardRank/GuildRankWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BillboardRank/GuildTop3Cell.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildJoinWin.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildManager.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildPreviewCell.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildPreviewCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildPreviewWin.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildPreviewWin.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildViewListCell.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/PlayerFairyData.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA5_Family/HA519_tagSCTagFamilyInfo.cs
@@ -20,6 +20,7 @@
    public ushort BroadcastLen;    //公告
    public string Broadcast;    //size = BroadcastLen
    public byte MemberCount;    //成员人数
    public  tagSCTagFamilyInfoMem[] MemberList;
    public uint DataServerID;    //数据所在服务器ID
    public HA519_tagSCTagFamilyInfo () {
@@ -43,7 +44,40 @@
        TransBytes (out BroadcastLen, vBytes, NetDataType.WORD);
        TransBytes (out Broadcast, vBytes, NetDataType.Chars, BroadcastLen);
        TransBytes (out MemberCount, vBytes, NetDataType.BYTE);
        MemberList = new tagSCTagFamilyInfoMem[MemberCount];
        for (int i = 0; i < MemberCount; i ++) {
            MemberList[i] = new tagSCTagFamilyInfoMem();
            TransBytes (out MemberList[i].PlayerID, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].NameLen, vBytes, NetDataType.BYTE);
            TransBytes (out MemberList[i].Name, vBytes, NetDataType.Chars, MemberList[i].NameLen);
            TransBytes (out MemberList[i].FmLV, vBytes, NetDataType.BYTE);
            TransBytes (out MemberList[i].LV, vBytes, NetDataType.WORD);
            TransBytes (out MemberList[i].Job, vBytes, NetDataType.BYTE);
            TransBytes (out MemberList[i].RealmLV, vBytes, NetDataType.BYTE);
            TransBytes (out MemberList[i].Face, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].FacePic, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].TitleID, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].FightPower, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].FightPowerEx, vBytes, NetDataType.DWORD);
            TransBytes (out MemberList[i].ServerID, vBytes, NetDataType.DWORD);
        }
        TransBytes (out DataServerID, vBytes, NetDataType.DWORD);
    }
    public class tagSCTagFamilyInfoMem {
        public uint PlayerID;
        public byte NameLen;
        public string Name;        //size = NameLen
        public byte FmLV;        //家族职位: 0-成员;1-精英;2-副族长;3-族长
        public ushort LV;        //等级
        public byte Job;        //职业
        public byte RealmLV;        //境界
        public uint Face;        //基本脸型
        public uint FacePic;        //头像框
        public uint TitleID;        //称号
        public uint FightPower;        //战力,求余亿部分
        public uint FightPowerEx;        //战力,整除亿部分
        public uint ServerID;        //所属区服ID
    }
}
Main/System/BillboardRank/GuildRankCell.cs
@@ -4,6 +4,7 @@
//--------------------------------------------------------
using UnityEngine;
using UnityEngine.UI;
using Cysharp.Threading.Tasks;
//玩家通用排名
public class GuildRankCell : MonoBehaviour
@@ -47,13 +48,7 @@
                return;
            }
            if (!GuildManager.Instance.guildsDict.ContainsKey(familyID))
                return;
            if (!UIManager.Instance.IsOpened<GuildPreviewWin>())
            {
                UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
            }
            GuildManager.Instance.SendViewGuild(familyID, rankData.LeaderServerID);
        });
    }
}
Main/System/BillboardRank/GuildRankWin.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
public class GuildRankWin : UIBase
@@ -23,6 +24,7 @@
    {
        manager.OnRefreshFairyList += OnRefreshFairyList;
        scroller.OnRefreshCell += OnRefreshCell;
        GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo;
        manager.SendFindGuild(string.Empty, 0, manager.pageCnt);
        manager.ResetQueryParam();
@@ -33,6 +35,12 @@
    {
        manager.OnRefreshFairyList -= OnRefreshFairyList;
        scroller.OnRefreshCell -= OnRefreshCell;
        GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
    }
    void OnUpdateViewFamilyInfo(int familyID)
    {
        UIManager.Instance.OpenWindowAsync<GuildPreviewWin>(familyID).Forget();
    }
    public void Display()
Main/System/BillboardRank/GuildTop3Cell.cs
@@ -4,6 +4,7 @@
//--------------------------------------------------------
using UnityEngine;
using UnityEngine.UI;
using Cysharp.Threading.Tasks;
//玩家通用的前3排名
public class GuildTop3Cell : MonoBehaviour
@@ -44,13 +45,7 @@
                return;
            }
            if (!GuildManager.Instance.guildsDict.ContainsKey(familyID))
                return;
            if (!UIManager.Instance.IsOpened<GuildPreviewWin>())
            {
                UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
            }
            GuildManager.Instance.SendViewGuild(familyID, rankData.LeaderServerID);
        });
    }
}
Main/System/Guild/GuildJoinWin.cs
@@ -23,7 +23,7 @@
        findBtn.AddListener(() => OnFindBtnClick());
        createGuildBtn.AddListener(OnCreateGuildBtnClick);
        quicklyJoinGuildBtn.AddListener(OnQuicklyJoinGuildBtnClick);
        serversBtn.AddListener(()=>
        serversBtn.AddListener(() =>
        {
            UIHelper.ShowServersPanel(GuildManager.Instance.crossServerIDList);
        });
@@ -37,6 +37,7 @@
        GuildManager.Instance.MyRequestJoinEvent += MyRequestJoinEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        guildListScroller.OnRefreshCell += RefreshCell;
        GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo;
        Display();
    }
@@ -46,6 +47,7 @@
        GuildManager.Instance.MyRequestJoinEvent -= MyRequestJoinEvent;
        guildListScroller.OnRefreshCell -= RefreshCell;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
        GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
        UIManager.Instance.GetUI<MainWin>()?.RestoreFuncBtn();
@@ -69,7 +71,7 @@
        guildListScroller.m_Scorller.RefreshActiveCellViews();
    }
    //列表变小的话 重新创建;列表变大的话,只添加
    void CreateScroller()
    {
@@ -107,6 +109,11 @@
        _cell.Display(cell.index);
    }
    void OnUpdateViewFamilyInfo(int familyID)
    {
        UIManager.Instance.OpenWindowAsync<GuildPreviewWin>(familyID).Forget();
    }
    private void OnFindBtnClick()
    {
        var nowQuery = findText.text;
Main/System/Guild/GuildManager.cs
@@ -689,14 +689,41 @@
    #region 查看目标公会
    public Dictionary<int, FairyData> viewGuildsDict = new Dictionary<int, FairyData>();
    public event Action OnUpdateViewFamilyInfo;
    public event Action<int> OnUpdateViewFamilyInfo;
    public void UpdateViewFamilyInfo(HA519_tagSCTagFamilyInfo pack)
    {
        FairyData data = new FairyData();
        SetFairyViewData(data, pack);
        // 存储并排序成员列表
        var memberList = new List<HA519_tagSCTagFamilyInfo.tagSCTagFamilyInfoMem>(pack.MemberList);
        memberList.Sort((a, b) =>
        {
            // 主排序:职务降序(3-族长 > 2-副族长 > 1-精英 > 0-成员)
            int jobCompare = b.FmLV.CompareTo(a.FmLV);
            if (jobCompare != 0) return jobCompare;
            // 次排序:战力降序
            long powerA = a.FightPowerEx * Constants.ExpPointValue + a.FightPower;
            long powerB = b.FightPowerEx * Constants.ExpPointValue + b.FightPower;
            return powerB.CompareTo(powerA);
        });
        data.memberList = memberList;
        viewGuildsDict[(int)data.FamilyID] = data;
        OnUpdateViewFamilyInfo?.Invoke();
        OnUpdateViewFamilyInfo?.Invoke((int)data.FamilyID);
    }
    /// <summary>
    /// 获取指定公会的排序后的成员列表(职务降序 → 战力降序)
    /// </summary>
    public List<HA519_tagSCTagFamilyInfo.tagSCTagFamilyInfoMem> GetSortedMemberList(int familyID)
    {
        if (viewGuildsDict.TryGetValue(familyID, out var data))
        {
            return data.memberList;
        }
        return null;
    }
    public static void SetFairyViewData(FairyData data, HA519_tagSCTagFamilyInfo view)
Main/System/Guild/GuildPreviewCell.cs
New file
@@ -0,0 +1,38 @@
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 查看其他公会界面-成员列表Cell
/// </summary>
public class GuildPreviewCell : CellView
{
    [SerializeField] AvatarCell avatarCell;
    [SerializeField] OfficialTitleCell officialTitle;
    [SerializeField] Text levelText;
    [SerializeField] Text jobText;
    [SerializeField] Text nameText;
    [SerializeField] Text fightPowerText;
    public void Display(HA519_tagSCTagFamilyInfo.tagSCTagFamilyInfoMem member)
    {
        int playerID = (int)member.PlayerID;
        int serverID = (int)member.ServerID;
        avatarCell.InitUI(AvatarHelper.GetAvatarModel(0, (int)member.Face, (int)member.FacePic)).Forget();
        avatarCell.AddListener(() =>
        {
            OtherPlayerDetailManager.Instance.ViewPlayerDetail(playerID, serverID);
        });
        officialTitle.InitUI(member.RealmLV, (int)member.TitleID).Forget();
        levelText.text = member.LV.ToString();
        jobText.text = RichTextMsgReplaceConfig.GetRichReplace("FAMILY", member.FmLV);
        nameText.text = member.Name;
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(member.FightPowerEx * Constants.ExpPointValue + member.FightPower);
    }
}
Main/System/Guild/GuildPreviewCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aac2007dcde275e42ae5283b312943f3
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
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();
    }
}
    void OnUpdateViewFamilyInfo(int familyID)
    {
        Display();
    }
}
Main/System/Guild/GuildPreviewWin.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fd9c288ff11ce574fa551ef39869d5ea
guid: a7972b36d7da9144bbb616682f5e2c1d
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/System/Guild/GuildViewListCell.cs
@@ -1,10 +1,12 @@
using UnityEngine;
using UnityEngine.UI;
using Cysharp.Threading.Tasks;
//公会查找列表,也是排行榜
public class GuildViewListCell : CellView
{
    [SerializeField] Image rankImg;
    [SerializeField] Transform rankTextTf;
    [SerializeField] Text rankText;
@@ -71,7 +73,7 @@
        seeGuildBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<GuildPreviewWin>(guildID);
            GuildManager.Instance.SendViewGuild(guildInfo.FamilyID, guildInfo.LeaderServerID);
        });
    }
Main/System/Guild/PlayerFairyData.cs
@@ -223,6 +223,9 @@
    //查找增加的字段
    public string LeaderName;
    //查看目标公会时的成员列表(按职务降序→战力降序排列)
    public List<HA519_tagSCTagFamilyInfo.tagSCTagFamilyInfoMem> memberList;
}
public class FairyMember
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs
@@ -60,7 +60,7 @@
        GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
    }
    private void OnUpdateViewFamilyInfo()
    private void OnUpdateViewFamilyInfo(int familyID)
    {
        if (viewPlayerData == null)
        {