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();
    }
}