hch
2026-03-26 1898a5f28dfffa7bbecf5d2bf024f20b8d0490e7
Main/System/Guild/GuildEmblemModel.cs
@@ -13,7 +13,8 @@
public class GuildEmblemModel : GameSystemManager<GuildEmblemModel>
{
    public readonly int FamilyActionsType = 15;     // 公会记录徽章类型15
    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> emblemActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
    private int m_NowChooseEmblemId;
@@ -51,15 +52,15 @@
    public override void Init()
    {
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        GuildManager.Instance.FamilyActionInfoEvent += OnFamilyActionInfoEvent;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
        GuildManager.Instance.EnterOrQuitGuildEvent += OnEnterOrQuitGuildEvent;
    }
    public override void Release()
    {
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
        GuildManager.Instance.FamilyActionInfoEvent -= OnFamilyActionInfoEvent;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
        GuildManager.Instance.EnterOrQuitGuildEvent -= OnEnterOrQuitGuildEvent;
    }
    public void OnBeforePlayerDataInitialize()
@@ -69,6 +70,12 @@
        createEmblemWord = "";
        oldShowActiveList.Clear();
        showList.Clear();
        emblemActions.Clear();
    }
    public void OnEnterOrQuitGuildEvent(bool isEnter)
    {
        OnBeforePlayerDataInitialize();
    }
    private void OnRefreshFairyInfo()
@@ -130,13 +137,15 @@
    // 刷新旧的激活列表,用于对比红点显示
    public void RefreshOldShowActiveList()
    {
        oldShowActiveList.Clear();
        for (int i = 0; i < showList.Count; i++)
        {
            //已解锁的
            if (IsUnLock(showList[i]))
            {
                oldShowActiveList.Add(showList[i]);
                if (!oldShowActiveList.Contains(showList[i]))
                {
                    oldShowActiveList.Add(showList[i]);
                }
            }
        }
    }
@@ -234,11 +243,6 @@
    }
    void OnFamilyActionInfoEvent(int familyId, int actionType)
    {
        UpdateRedPoint();
    }
    public bool IsLimitTime(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
    {
        familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction();
@@ -267,20 +271,33 @@
        return PlayerDatas.Instance.fairyData.mine.FmLV == 3;
    }
    // 更新徽章信息
    public bool UpdateEmblemAction(HA513_tagMCFamilyActionInfo _package)
    {
        if (_package.ActionType != GuildManager.FamilyActionsType)
        {
            return false;
        }
        for (int i = 0; i < _package.FamilyActionList.Length; i++)
        {
            int emblemId = (int)_package.FamilyActionList[i].Value1;
            emblemActions[emblemId] = _package.FamilyActionList[i];
        }
        UpdateRedPoint();
        return true;
    }
    // 获得徽章记录信息信息(活动途径获取的徽章,定制徽章),value1是徽章ID,value2是徽章到期时间
    private bool TryGetfamilyAction(int emblemId, out HA513_tagMCFamilyActionInfo.tagMCFamilyAction familyAction)
    {
        familyAction = new HA513_tagMCFamilyActionInfo.tagMCFamilyAction();
        if (GuildManager.Instance.TryGetFamilyActions(FamilyActionsType, out var actions))
        if (emblemActions.TryGetValue(emblemId, out familyAction))
        {
            for (int i = 0; i < actions.Length; i++)
            {
                if (actions[i].Value1 == emblemId)
                {
                    familyAction = actions[i];
                    return true;
                }
            }
            return true;
        }
        return false;