262 幻境阁-客户端 武将表配置了开服第x天展示的武将,在没图鉴展示前不显示头像和形象
6个文件已修改
108 ■■■■■ 已修改文件
Main/Config/PartialConfigs/ModelConfig.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionManager.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/ModelConfig.cs
@@ -19,7 +19,21 @@
        {
            return new List<int>();
        }
        return tabTypeDict[tabType];
    }
}
        List<int> allKeys = tabTypeDict[tabType];
        List<int> validKeys = new List<int>();
        for (int i = 0; i < allKeys.Count; i++)
        {
            int id = allKeys[i];
            var cfg = Get(id);
            // 过滤未达到开服天数的武将和皮肤头像
            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(cfg.UnlockWay, cfg.UnlockValue))
            {
                validKeys.Add(id);
            }
        }
        return validKeys;
    }
}
Main/System/PhantasmPavilion/PhantasmPavilionFaceHandler.cs
@@ -8,7 +8,20 @@
    }
    public List<int> GetKeyList()
    {
        return PlayerFaceConfig.GetKeys();
        List<int> allKeys = PlayerFaceConfig.GetKeys();
        List<int> validKeys = new List<int>();
        for (int i = 0; i < allKeys.Count; i++)
        {
            int id = allKeys[i];
            var faceCfg = PlayerFaceConfig.Get(id);
            // 过滤未达到开服天数的武将和皮肤头像
            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(faceCfg.UnlockWay, faceCfg.UnlockValue))
            {
                validKeys.Add(id);
            }
        }
        return validKeys;
    }
    public int GetResourceType(int id)
    {
Main/System/PhantasmPavilion/PhantasmPavilionFaceWin.cs
@@ -87,6 +87,7 @@
        manager.OnUpdateFaceInfoEvent += OnUpdateFaceInfoEvent;
        manager.OnUpdateFacePicInfo += OnUpdateFacePicInfo;
        manager.OnTimeOut += OnTimeOut;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        InitRedPoint();
        SelectTiltleBtn();
    }
@@ -106,11 +107,17 @@
        manager.OnUpdateFaceInfoEvent -= OnUpdateFaceInfoEvent;
        manager.OnUpdateFacePicInfo -= OnUpdateFacePicInfo;
        manager.OnTimeOut -= OnTimeOut;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Face, functionOrder + 1);
        manager.UpdateRedPoint();
    }
    private void OnDayEvent()
    {
        SelectTiltleBtn();
    }
    private void OnTimeOut()
    {
        RefreshAll(manager.nowType);
Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
@@ -54,6 +54,7 @@
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        HeroUIManager.Instance.OnNewSkinAcquired += OnNewSkinAcquired;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        InitTable();
        InitTabRedPoint();
    }
@@ -67,6 +68,12 @@
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        HeroUIManager.Instance.OnNewSkinAcquired -= OnNewSkinAcquired;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
    }
    private void OnDayEvent()
    {
        UpdateRedPoint();
    }
    private void OnNewSkinAcquired(int arg1, int arg2)
@@ -675,6 +682,41 @@
        OnTimeOut?.Invoke();
    }
    /// <summary>
    /// 判断该形象/头像是否可以显示在幻境阁列表中
    /// </summary>
    public bool IsFaceOrModelVisible(int unlockWay, int unlockValue)
    {
        if (unlockWay == 3)
        {
            int heroId = unlockValue;
            return IsHeroCollectionOpen(heroId);
        }
        else if (unlockWay == 4)
        {
            // 皮肤途径,UnlockValue 是 SkinID
            int skinId = unlockValue;
            return IsHeroCollectionOpen(HeroConfig.GetHeroIDBySkinID(skinId));
        }
        // 其他获取途径(如活动、默认等),不做限制,直接显示
        return true;
    }
    /// <summary>
    /// 检查对应武将是否达到了开服天数要求
    /// </summary>
    public bool IsHeroCollectionOpen(int heroId)
    {
        var config = HeroConfig.Get(heroId);
        if (config == null) return false;
        // 0表示不限制开服天数
        if (config.OpenCollectionDay > 0 && TimeUtility.OpenDay + 1 < config.OpenCollectionDay) return false;
        return true;
    }
    #region 收封包
    public event Action OnUpdateModelStarAdd;
    public void UpdateModelInfo(HB119_tagSCModelInfo vNetData)
Main/System/PhantasmPavilion/PhantasmPavilionModelHandler.cs
@@ -8,7 +8,21 @@
    }
    public List<int> GetKeyList()
    {
        return ModelConfig.GetKeys();
        List<int> allKeys = ModelConfig.GetKeys();
        List<int> validKeys = new List<int>();
        for (int i = 0; i < allKeys.Count; i++)
        {
            int id = allKeys[i];
            var modelCfg = ModelConfig.Get(id);
            // 过滤未达到开服天数的武将和皮肤形象
            if (PhantasmPavilionManager.Instance.IsFaceOrModelVisible(modelCfg.UnlockWay, modelCfg.UnlockValue))
            {
                validKeys.Add(id);
            }
        }
        return validKeys;
    }
    public int GetResourceType(int id)
    {
Main/System/PhantasmPavilion/PhantasmPavilionModelWin.cs
@@ -60,6 +60,8 @@
        manager.OnUpdateModelInfoEvent += OnUpdateModelInfoEvent;
        manager.OnTimeOut += OnTimeOut;
        manager.OnUpdateModelStarAdd += OnUpdateModelStarAdd;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        InitRedPoint();
        TabSetActive();
        SelectTiltleBtn();
@@ -77,11 +79,17 @@
        manager.OnUpdateModelInfoEvent -= OnUpdateModelInfoEvent;
        manager.OnTimeOut -= OnTimeOut;
        manager.OnUpdateModelStarAdd -= OnUpdateModelStarAdd;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        manager.RemoveAllNewHeroByTabType(PhantasmPavilionType.Model, functionOrder + 1);
        manager.UpdateRedPoint();
    }
    private void OnDayEvent()
    {
        SelectTiltleBtn();
    }
    private void OnTimeOut()
    {
        RefreshAll(manager.nowType, functionOrder + 1);