From 9f5db2e92b93dcbe7c5d53606d62c8f04aef3c19 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 18 三月 2026 23:20:18 +0800
Subject: [PATCH] 533 开服冲榜-客户端  开服冲榜的将星云集、百炼成军、红袖添香、命定乾坤和限时冲刺的武将冲刺、古宝冲刺、元宝冲刺添加特权标识

---
 Main/System/Guild/GuildManager.cs |  263 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 205 insertions(+), 58 deletions(-)

diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index d7fc442..c37afb5 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -8,10 +8,9 @@
 using UnityEngine;
 
 
-public class GuildManager : GameSystemManager<GuildManager>
+public partial class GuildManager : GameSystemManager<GuildManager>
 {
     // 瀹舵棌鑷畾涔夎褰曠被鍨�
-    public const int CustomyActionType = 0;     //閫氱敤
     public const int MemberChangeActionType = 12;      //鍏細鍙樻洿璁板綍
     public const int FamilyActionsType = 15;     // 鍏細璁板綍寰界珷绫诲瀷15
     public const int ZBGFamilyActionType = 16;  // 鐝嶅疂闃佽褰曠被鍨�
@@ -50,6 +49,7 @@
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
         TimeMgr.Instance.OnHourEvent += UpdateZBGRedpoint;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
     }
     public override void Release()
     {
@@ -58,19 +58,28 @@
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
         TimeMgr.Instance.OnHourEvent -= UpdateZBGRedpoint;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
     }
 
+    private void OnRefreshFairyInfo()
+    {
+        UpdateRequestRedpoint();
+        UpdateDonateRedPoint();
+    }
 
     void OnBeforePlayerDataInitialize()
     {
+        zoneID = 0;
+        crossServerIDList.Clear();
         ClearGuildData();
         donateCntList = null;
     }
 
     void OnBeforePlayerDataInitializeEx()
     {
-        guildChanged = false;
         isQueryZBGYet = false;
+        //澧為噺鐨勫舰寮�
+        PlayerDatas.Instance.fairyData.ClearData();
     }
 
     void OnPlayerLoginOk()
@@ -92,7 +101,6 @@
         PlayerDatas.Instance.baseData.FamilyId = 0;
         m_FairyRequesteds.Clear();
         familyActions.Clear();
-        guildChanged = false;
         applyList.Clear();
         PlayerDatas.Instance.fairyData.ClearData();
 
@@ -165,7 +173,24 @@
 
 
     //鐝嶅疂闃�(琛屽晢)
-    public int zhenbaogeCutState = 0;
+    int m_ZhenbaogeCutState = 0;
+    public int zhenbaogeCutState
+    {
+        get
+        {
+            if (familyZBGActions.Count - 1 >= 50)
+            {
+                //鐮嶄环浜烘暟瓒呰繃涓婇檺鍚庡彲鐩存帴璐拱
+                m_ZhenbaogeCutState = 1;
+            }
+            return m_ZhenbaogeCutState;
+        }
+        set
+        {
+
+            m_ZhenbaogeCutState = value;
+        }
+    }
     public int zhenbaogeBuyState = 0;
     public bool needCheckCutCD = false;
     public event Action UpdateZhenbaogeEvent;
@@ -180,7 +205,7 @@
     public int zbgOrgPriceValue;
     public int zbgChangFamilyCD;
     public List<int> cutCntListForTalk = new List<int>();
-
+    public int familyRecordMaxCount;
 
     void ParseConfig()
     {
@@ -219,6 +244,14 @@
         zbgOrgPriceValue = int.Parse(config.Numerical2);
         zbgChangFamilyCD = int.Parse(config.Numerical3);
         cutCntListForTalk = JsonMapper.ToObject<List<int>>(config.Numerical4);
+
+        config = FuncConfigConfig.Get("FamilyNote");
+        familyRecordMaxCount = int.Parse(config.Numerical1);
+
+
+        config = FuncConfigConfig.Get("FamilyBillboardSet");
+        pageCnt = int.Parse(config.Numerical1);
+        queryPointNum = int.Parse(config.Numerical2);
     }
 
 
@@ -338,7 +371,7 @@
                 punishTime = quitGuildPunishTime[Math.Min(quitCount, quitGuildPunishTime.Length - 1)];
         }
 
-        return punishTime * 60 - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime);
+        return punishTime * 60 - (TimeUtility.GetCommServerTick(zoneID)- PlayerDatas.Instance.baseData.leaveFamilyTime);
     }
 
 
@@ -522,10 +555,70 @@
 
     // 鏌ユ壘鐨勫叕浼欼D锛氬叕浼氭暟鎹�
     public Dictionary<int, FairyData> guildsDict = new Dictionary<int, FairyData>();
+    public int myFairyRank;
     // 鎸夋煡璇㈤〉瀛樺偍
     public List<int> pageIndexList = new List<int>();  //姝e父鏄寜椤垫煡璇紝椤哄簭娣诲姞鍗冲彲
     public int curPageIndex;
     public int totalPageCount;
+
+    public int lastPage = -1;
+    public int pageCnt; //姣忛〉鏌ヨ鏉℃暟
+    int queryPointNum;  //鏌ヨ鐐�
+
+    public bool isPowerSort
+    {
+        get
+        {
+            return LocalSave.GetBool($"GuildApplyList_IsPowerSort_{PlayerDatas.Instance.PlayerId}");
+        }
+        set
+        {
+            LocalSave.SetBool($"GuildApplyList_IsPowerSort_{PlayerDatas.Instance.PlayerId}", value);
+        }
+    }
+
+
+    public FairyData GetFairyDataByRank(int rank)
+    {
+        if (rank < 1)
+            return null;
+        int index = rank - 1;
+        FairyData fairyData = GetFairyDataByIndex(index);
+        return fairyData;
+    }
+
+    public FairyData GetFairyDataByIndex(int index)
+    {
+        if (pageIndexList.IsNullOrEmpty() || index < 0 || index >= pageIndexList.Count)
+            return null;
+        int fairyID = pageIndexList[index];
+        FairyData fairyData = GetFairyData(fairyID);
+        return fairyData;
+    }
+
+    public FairyData GetFairyData(int fairyID)
+    {
+        return guildsDict.TryGetValue(fairyID, out var data) ? data : null;
+    }
+
+    public void ResetQueryParam()
+    {
+        pageCnt = 20;
+        lastPage = -1;
+        queryPointNum = 12;
+    }
+
+    public void ListenRankPage(int index)
+    {
+        int page = index / pageCnt;
+        if (index > page * pageCnt + queryPointNum)
+        {
+            if (lastPage >= page)
+                return;
+            lastPage = page;
+            SendFindGuild(string.Empty, page + 1, pageCnt);
+        }
+    }
 
     //鏌ユ壘鍏細鍒楄〃
     public void OnRefreshGuildViewList(HA523_tagMCFamilyViewList vNetData)
@@ -540,7 +633,7 @@
             SetFairyViewData(data, guildInfo);
             pageIndexList.Add((int)guildInfo.FamilyID);
         }
-
+        myFairyRank = (int)vNetData.Rank;   //0-娌℃湁鍏細鎴栨病鏈夊湪姒滀笂锛�>0-瀵瑰簲鎺掑悕
 
         if (OnRefreshFairyList != null)
         {
@@ -573,28 +666,13 @@
         GameNetSystem.Instance.SendInfo(pack);
     }
 
-    public void SendFindGuildNoDecrypt(string msg, int pageIndex = 0, int pageSize = 20)
-    {
-        if (pageIndex == 0)
-        {
-            //榛樿鏌ヨ绗竴椤靛嵆浠h〃閲嶆柊寮�濮嬫煡璇紝娓呯┖涔嬪墠鐨勬暟鎹�
-            guildsDict.Clear();
-            pageIndexList.Clear();
-        }
-        var pack = new CA620_tagCMViewFamilyPage();
-        pack.Msg = msg;
-        pack.MsgLen = (byte)msg.Length;
-        pack.PageIndex = (byte)pageIndex;
-        pack.ShowCount = (byte)pageSize;
-        GameNetSystem.Instance.SendInfo(pack);
-    }
-
     public static void SetFairyViewData(FairyData data, HA523_tagMCFamilyViewList.tagMCFamilyView view)
     {
         data.Rank = view.Rank;
         data.FamilyID = (int)view.FamilyID;
         data.FamilyName = view.FamilyName;
         data.LeaderID = (int)view.LeaderID;
+        data.LeaderServerID = (int)view.LeaderServerID;
         data.LeaderName = view.LeaderName;
         data.FamilyLV = view.FamilyLV;
         data.JoinReview = view.JoinReview;
@@ -604,16 +682,52 @@
         data.EmblemWord = view.EmblemWord;
         data.totalFightPower = view.FightPowerEx * Constants.ExpPointValue + view.FightPower;
         data.MemberCount = view.MemberCount;
-
     }
 
+    #endregion
+
+    #region 鏌ョ湅鐩爣鍏細
+    public Dictionary<int, FairyData> viewGuildsDict = new Dictionary<int, FairyData>();
+
+    public event Action OnUpdateViewFamilyInfo;
+
+    public void UpdateViewFamilyInfo(HA519_tagSCTagFamilyInfo pack)
+    {
+        FairyData data = new FairyData();
+        SetFairyViewData(data, pack);
+        viewGuildsDict[(int)data.FamilyID] = data;
+        OnUpdateViewFamilyInfo?.Invoke();
+    }
+
+    public static void SetFairyViewData(FairyData data, HA519_tagSCTagFamilyInfo view)
+    {
+        data.FamilyID = (int)view.FamilyID;
+        data.FamilyName = view.FamilyName;
+        data.LeaderID = (int)view.LeaderID;
+        data.LeaderServerID = (int)view.LeaderServerID;
+        data.LeaderName = view.LeaderName;
+        data.FamilyLV = view.FamilyLV;
+        data.ServerID = (int)view.ServerID;
+        data.EmblemID = (int)view.EmblemID;
+        data.EmblemWord = view.EmblemWord;
+        data.totalFightPower = view.FightPowerEx * Constants.ExpPointValue + view.FightPower;
+        data.MemberCount = view.MemberCount;
+    }
+
+    public void SendViewGuild(int fairyID, int serverID)
+    {
+        var pack = new CA619_tagCSViewTagFamily();
+        pack.FamilyID = (uint)fairyID;
+        pack.DataServerID = (uint)serverID;
+        GameNetSystem.Instance.SendInfo(pack);
+    }
     #endregion
 
     #region 鐢宠鍒楄〃
     public event Action OnRefreshApplyList;
     private List<FairyApply> applyList = new List<FairyApply>();
     private Redpoint memberRedpoint = new Redpoint(107, 10702);
-    private Redpoint applyRedpoint = new Redpoint(10702, 1070201);
+    private Redpoint applyRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, 1070201);
 
     //鐢宠鍔犲叆鐨勭帺瀹朵俊鎭�
     public void OnRefreshRequestJoinPlayerInfo(HA522_tagMCFamilyReqJoinInfo vNetData)
@@ -642,6 +756,9 @@
         }
         UpdateRequestRedpoint();
     }
+
+
+
 
     void UpdateRequestRedpoint()
     {
@@ -697,6 +814,12 @@
                     SysNotifyMgr.Instance.ShowTip("jiazu_lhs_202580");
                     return;
                 }
+
+                if (guildsDict[id].JoinLVMin > PlayerDatas.Instance.baseData.realmLevel && RealmConfig.HasKey(guildsDict[id].JoinLVMin))
+                {
+                    SysNotifyMgr.Instance.ShowTip("GuildApply01", RealmConfig.Get(guildsDict[id].JoinLVMin).Name);
+                    return;
+                }
             }
         }
 
@@ -724,39 +847,64 @@
         return 0;
     }
 
+    public void SendJoinFamilyReply(int tagPlayerID, bool isOK)
+    {
+        CA621_tagCMJoinFamilyReply pack = new CA621_tagCMJoinFamilyReply();
+        pack.TagPlayerID = (uint)tagPlayerID;
+        pack.IsOK = (byte)(isOK ? 1 : 0);
+        GameNetSystem.Instance.SendInfo(pack);
+    }
 
+    public void SendChangeFamilyJoin(int joinReview, int joinLVMin)
+    {
+        CA622_tagCMChangeFamilyJoin pack = new CA622_tagCMChangeFamilyJoin();
+        pack.JoinReview = (byte)joinReview;
+        pack.JoinLVMin = (ushort)joinLVMin;
+        GameNetSystem.Instance.SendInfo(pack);
+    }
 
+    public void SendRequestJoinFamilyByPlayer(int tagPlayerID)
+    {
+        CA601_tagCMRequestJoinFamilyByPlayer pack = new CA601_tagCMRequestJoinFamilyByPlayer();
+        pack.TagPlayerID = (uint)tagPlayerID;
+        GameNetSystem.Instance.SendInfo(pack);
+    }
+
+    List<string> optionStrings = null;
+    List<int> options = null;
+    public bool TryGetApplyOptions(out List<int> optionKeys, out List<string> optionValues)
+    {
+        optionKeys = null;
+        optionValues = null;
+
+        if (options == null)
+        {
+            options = new List<int>();
+            options = new List<int>(RealmConfig.GetKeys());
+            options.Sort();
+            options.Remove(0);
+        }
+
+        if (optionStrings == null)
+        {
+            optionStrings = new List<string>();
+            foreach (int lv in options)
+            {
+                if (!RealmConfig.HasKey(lv))
+                    continue;
+                RealmConfig realmConfig = RealmConfig.Get(lv);
+                optionStrings.Add(UIHelper.AppendColor(OfficialRankManager.Instance.GetOfficialRankColor(realmConfig.Quality), realmConfig.Name));
+            }
+        }
+
+        if (options.IsNullOrEmpty() || optionStrings.IsNullOrEmpty() || options.Count != optionStrings.Count)
+            return false;
+        optionKeys = options;
+        optionValues = optionStrings;
+        return true;
+    }
     #endregion
 
-    float lastChangeMarkTime = 0;   //鎵撳紑鐣岄潰鎯呭喌涓嬮伩鍏嶇煭鏃堕棿澶氭绔嬪嵆璇锋眰锛孋/S閫氫俊涔熸槸鏈夋椂闂撮棿闅�
-    public bool guildChanged = false;
-    //Type锛�0-鏃狅紱1-鎴愬憳鍔犲叆锛�2-鎴愬憳閫�鍑猴紱3-鏀朵汉璁剧疆淇敼锛�4-鍏憡淇敼锛�5-寰界珷淇敼锛�6-鐩熶富鍙樻洿锛�7-鎴愬憳鑱屼綅鍙樻洿锛�8-鎴愬憳涓婄嚎锛�9-鎴愬憳绂荤嚎锛�
-    //鍏細鏁版嵁鍙樺寲锛岃姹傛柊鐨勫叕浼氫俊鎭紝濡傚湪鎵撳紑鍏細鍒楄〃鏃惰姹傦紝鍏朵粬鍔熻兘鏍规嵁鑷韩鎯呭喌璇锋眰
-    public void UpdateGuildDataChangeMark(HA521_tagMCFamilyChange netPack)
-    {
-        guildChanged = true;
-        if (Time.time - lastChangeMarkTime < 0.2f)
-        {
-            //灏忎紭鍖� 濡傛灉鏈夐棶棰樹篃鍙互鍘婚櫎
-            return;
-        }
-        lastChangeMarkTime = Time.time;
-        if (UIManager.Instance.IsOpened<GuildHallWin>())
-        {
-            RequestGuildData();
-        }
-    }
-
-    public void RequestGuildData()
-    {
-        if (guildChanged)
-        {
-            guildChanged = false;
-            var pack = new CA626_tagCMGetFamilyInfo();
-            GameNetSystem.Instance.SendInfo(pack);
-
-        }
-    }
 
     public void SendKickFairy(uint playerID)
     {
@@ -865,7 +1013,7 @@
             return false;
         }
         bool restart = false;
-        
+
         for (int i = 0; i < vNetData.FamilyActionList.Length; i++)
         {
             int playerID = (int)vNetData.FamilyActionList[i].Value1;
@@ -969,7 +1117,6 @@
 
     #endregion
 
-
     #region 绾㈢偣
 
     Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
@@ -1014,7 +1161,7 @@
         {
             return;
         }
-        if (TimeUtility.ServerNow.Hour < 10)
+        if (TimeUtility.GetCommServerNow(zoneID).Hour < 10)
             return;
 
         if (zhenbaogeCutState == 0)

--
Gitblit v1.8.0