lcy
2026-01-06 5e77987b90e8d5cea3c5b0600ca21bc4e1f913ea
Main/System/Guild/GuildManager.cs
@@ -10,6 +10,13 @@
public 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;  // 珍宝阁记录类型
    public const int GuildBossActionType = 18;  //讨伐
    // 申请的公会列表
    private List<int> m_FairyRequesteds = new List<int>();
    // 公会自定义记录附加数据,按类型存储
@@ -38,32 +45,35 @@
    public override void Init()
    {
        ParseConfig();
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
        TimeMgr.Instance.OnHourEvent += UpdateZBGRedpoint;
    }
    public override void Release()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
        TimeMgr.Instance.OnHourEvent -= UpdateZBGRedpoint;
    }
    void OnBeforePlayerDataInitialize()
    {
        ClearGuildData();
        donateCntList = null;
    }
    void OnPlayerLoginOk()
    {
        UpdateDonateRedPoint();
        QueryZBGFamilyInfo();
    }
    void PlayerDataRefreshEvent(PlayerDataType type)
    {
        if(type == PlayerDataType.default33)
        if (type == PlayerDataType.default33)
        {
            UpdateDonateRedPoint();
        }
@@ -71,13 +81,19 @@
    void ClearGuildData()
    {
        PlayerDatas.Instance.baseData.FamilyId = 0;
        m_FairyRequesteds.Clear();
        familyActions.Clear();
        guildChanged = false;
        applyList.Clear();
        PlayerDatas.Instance.fairyData.ClearData();
        isQueryZBGYet = false;
        zhenbaogeCutState = 0;
        familyZBGActions.Clear();
        sortPlayerCut.Clear();
    }
    //退出公会
    public void AfterQuitGuild()
    {
@@ -87,11 +103,11 @@
        UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
        isQueryZBGYet = false;
        zhenbaogeCutState = 0;
        familyZBGActions.Clear();
        sortPlayerCut.Clear();
        // isQueryZBGYet = false;
        // zhenbaogeCutState = 0;
        // familyZBGActions.Clear();
        // sortPlayerCut.Clear();
        UpdateZBGRedpoint();
        UpdateDonateRedPoint();
        EnterOrQuitGuildEvent?.Invoke(false);
@@ -104,6 +120,7 @@
        await UniTask.Delay(100);
        UpdateDonateRedPoint();
        UpdateZBGRedpoint();
        QueryZBGFamilyInfo();
        EnterOrQuitGuildEvent?.Invoke(true);
    }
@@ -137,7 +154,7 @@
    public int renameFairyNameMoneyType;
    //珍宝阁(行商)
    public int zhenbaogeCutState = 0;
@@ -146,7 +163,7 @@
    public event Action UpdateZhenbaogeEvent;
    public bool isQueryZBGYet = false;
    public float lastZBGStartTime = 0; //过天刷新用
    public const int ZBGFamilyActionType = 16;
    //{id:数据} 砍价行为,value1为玩家ID,特殊约定为1时为家族的数据
    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> familyZBGActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
    public List<int> sortPlayerCut = new List<int>();
@@ -384,7 +401,6 @@
    #region 仙盟商店开启
    public int fairyStoreLimit = 0;
    public bool fairyStoreOpen
@@ -429,6 +445,31 @@
            return;
        }
        // 行商 砍价
        if (UpdateHawkerAction(_package))
        {
            return;
        }
        // 徽章
        if (GuildEmblemModel.Instance.UpdateEmblemAction(_package))
        {
            return;
        }
        // 公会讨伐
        if (GuildBossManager.Instance.UpdateGuildBossInfo(_package))
        {
            return;
        }
        //上面各个功能要return
        UpdataCommonAction(_package);
    }
    // 通用记录 只适用单条数据的记录情况 或有服务端保证列表全部信息直接覆盖,其他功能比较复杂各自负责存储
    void UpdataCommonAction(HA513_tagMCFamilyActionInfo _package)
    {
        if (!familyActions.ContainsKey((int)_package.FamilyID))
        {
            familyActions.Add((int)_package.FamilyID, new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction[]>());
@@ -436,11 +477,10 @@
        familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList;
        UpdateHawkerAction(_package);
        FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType);
    }
    // 通用记录
    public bool TryGetFamilyActions(int actionType, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction[] familyAction)
    {
        familyAction = null;
@@ -527,6 +567,21 @@
        GameNetSystem.Instance.SendInfo(pack);
    }
    public void SendFindGuildNoDecrypt(string msg, int pageIndex = 0, int pageSize = 20)
    {
        if (pageIndex == 0)
        {
            //默认查询第一页即代表重新开始查询,清空之前的数据
            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)
    {
@@ -764,7 +819,7 @@
    #endregion
    #region 珍宝阁
    public void UpdateZhenbaogeInfo(HA512_tagMCFamilyZhenbaogeInfo netPack)
    {
@@ -784,7 +839,7 @@
        if (isQueryZBGYet)
            return;
        QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, 16);
        QueryFamilyAction((int)PlayerDatas.Instance.baseData.FamilyId, ZBGFamilyActionType);
        isQueryZBGYet = true;
    }
@@ -792,11 +847,11 @@
    //更新砍价信息
    public void UpdateHawkerAction(HA513_tagMCFamilyActionInfo vNetData)
    public bool UpdateHawkerAction(HA513_tagMCFamilyActionInfo vNetData)
    {
        if (vNetData.ActionType != ZBGFamilyActionType)
        {
            return;
            return false;
        }
        bool restart = false;
        if (vNetData.FamilyActionList.Length == 1 && vNetData.FamilyActionList[0].Value1 == 1)
@@ -834,6 +889,8 @@
        UpdateFamilyActionEvent?.Invoke(restart);
        UpdateZBGRedpoint();
        return true;
    }
    //砍价人数
@@ -871,7 +928,7 @@
    }
    public Dictionary <int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
    public Dictionary<int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
    //未议价成员
    public void CalcNoCutMembers()
@@ -883,7 +940,7 @@
            return;
        }
        foreach(var playerID in fairy.memberIDList)
        foreach (var playerID in fairy.memberIDList)
        {
            if (!familyZBGActions.ContainsKey(playerID))
            {
@@ -896,10 +953,10 @@
    #region 红点
    Redpoint hallRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.guildHallRedpointID);
    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.guildHallRedpointID * 10);
    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
    //珍宝阁(行商)
    Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.MainGuildRedpoint * 100 + 1);
    Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.hawkerRedpointID);
    void UpdateDonateRedPoint()
    {
@@ -930,7 +987,7 @@
            }
        }
    }
    public void UpdateZBGRedpoint()
    {
        zbgRedpoint.state = RedPointState.None;
@@ -939,6 +996,8 @@
        {
            return;
        }
        if (TimeUtility.ServerNow.Hour < 10)
            return;
        if (zhenbaogeCutState == 0)
        {