492 武将登场 武将图集和武将背包的羁绊图标和羁绊属性,如果该羁绊组合有一个不满足开服天天条件就隐藏
3个文件已修改
112 ■■■■ 已修改文件
Main/System/HeroUI/HeroBestWin.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroTrainWin.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.Collect.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroBestWin.cs
@@ -127,7 +127,7 @@
        allAttrScroll.verticalNormalizedPosition = 1;
        Display();
        HeroUIManager.Instance.skinRedpoint.state = HeroUIManager.Instance.HeroAllSkinStateForRedpoint(HeroUIManager.Instance.selectForPreviewHeroID, true) > 0 ? RedPointState.Simple : RedPointState.None;
    }
@@ -143,7 +143,7 @@
        jobPosNameText.text = HeroUIManager.Instance.GetJobName(heroConfig.Class);
        descText.text = heroConfig.Desc;
        HeroUIManager.Instance.PlayerLHSound(skinID);
        RefreshConn();
        normalSkillCell.Init(heroConfig.AtkSkillID, () =>
        {
@@ -193,8 +193,17 @@
    {
        if (heroConfig.FetterIDList.Length > 0)
        {
            connetionForm.SetActive(true);
            connetionForm.Display(heroConfig.FetterIDList[0], Language.Get("herocard38") + "\n", true);
            int fetterID = heroConfig.FetterIDList[0];
            HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID);
            if (fetterConfig != null && HeroUIManager.IsFetterAllHeroOpen(fetterConfig))
            {
                connetionForm.SetActive(true);
                connetionForm.Display(fetterID, Language.Get("herocard38") + "\n", true);
            }
            else
            {
                connetionForm.SetActive(false);
            }
        }
        else
        {
@@ -221,7 +230,7 @@
        }
        HeroUIManager.Instance.selectForPreviewHeroID = HeroUIManager.Instance.heroCollectList[resultIndex];
        Display();
        //控制一级功能界面的皮肤按钮
        var ui = UIManager.Instance.GetUI<HeroBestBaseWin>();
        if (ui != null)
@@ -330,7 +339,7 @@
    }
    void RefreshAllPotential()
    {
@@ -394,11 +403,21 @@
    //羁绊
    void RefreshFetter()
    {
        if (heroConfig.FetterIDList.Length == 0)
        if (heroConfig.FetterIDList.IsNullOrEmpty())
        {
            fetterGo.SetActive(false);
            return;
        }
        // 检查第一个羁绊组合是否满足开服天条件,不满足则隐藏整个羁绊区域
        int firstFetterID = heroConfig.FetterIDList[0];
        HeroFetterConfig firstFetterConfig = HeroFetterConfig.Get(firstFetterID);
        if (firstFetterConfig == null || !HeroUIManager.IsFetterAllHeroOpen(firstFetterConfig))
        {
            fetterGo.SetActive(false);
            return;
        }
        fetterGo.SetActive(true);
        for (int i = 0; i < fetterText.Length; i++)
@@ -526,6 +545,5 @@
            }
        }
    }
}
Main/System/HeroUI/HeroTrainWin.cs
@@ -371,8 +371,17 @@
    {
        if (hero.heroConfig.FetterIDList.Length > 0)
        {
            connetionForm.SetActive(true);
            connetionForm.Display(hero.heroConfig.FetterIDList[0], Language.Get("herocard38") + "\n", true, guid);
            int fetterID = hero.heroConfig.FetterIDList[0];
            HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID);
            if (fetterConfig != null && HeroUIManager.IsFetterAllHeroOpen(fetterConfig))
            {
                connetionForm.SetActive(true);
                connetionForm.Display(fetterID, Language.Get("herocard38") + "\n", true, guid);
            }
            else
            {
                connetionForm.SetActive(false);
            }
        }
        else
        {
@@ -694,6 +703,16 @@
            fetterGo.SetActive(false);
            return;
        }
        // 检查第一个羁绊组合是否满足开服天条件,不满足则隐藏整个羁绊区域
        int firstFetterID = hero.heroConfig.FetterIDList[0];
        HeroFetterConfig firstFetterConfig = HeroFetterConfig.Get(firstFetterID);
        if (firstFetterConfig == null || !HeroUIManager.IsFetterAllHeroOpen(firstFetterConfig))
        {
            fetterGo.SetActive(false);
            return;
        }
        fetterGo.SetActive(true);
        for (int i = 0; i < fetterText.Length; i++)
Main/System/HeroUI/HeroUIManager.Collect.cs
@@ -162,8 +162,8 @@
            HeroConfig heroConfig = HeroConfig.Get(heroID);
            if (heroConfig.PlayerCanUse == 0)
                continue;
            // 新增:开服第x天显示图鉴,0表示不限制开服天
            if (heroConfig.OpenCollectionDay > 0 && TimeUtility.OpenDay + 1 < heroConfig.OpenCollectionDay)
            // 开服第x天显示图鉴,0表示不限制开服天
            if (HasOpenCollectionDayLimit(heroID) && !IsOpenCollectionDayMet(heroID))
                continue;
            if (!heroCollectDict.ContainsKey(heroConfig.Quality))
            {
@@ -414,6 +414,57 @@
    }
    #region 开服天数相关方法
    /// <summary>
    /// 检查武将是否配置了开服展示天数限制
    /// </summary>
    /// <param name="heroID">武将ID</param>
    /// <returns>true: 有开服天限制; false: 无限制(OpenCollectionDay==0 或配置不存在)</returns>
    public static bool HasOpenCollectionDayLimit(int heroID)
    {
        HeroConfig heroConfig = HeroConfig.Get(heroID);
        if (heroConfig == null)
            return false;
        return heroConfig.OpenCollectionDay > 0;
    }
    /// <summary>
    /// 检查武将是否已满足开服展示天数要求(仅在有限制时调用有意义)
    /// </summary>
    /// <param name="heroID">武将ID</param>
    /// <returns>true: 已满足展示天数; false: 尚未满足</returns>
    public static bool IsOpenCollectionDayMet(int heroID)
    {
        HeroConfig heroConfig = HeroConfig.Get(heroID);
        if (heroConfig == null)
            return false;
        // OpenCollectionDay==0 无限制,视为已满足
        if (heroConfig.OpenCollectionDay <= 0)
            return true;
        return TimeUtility.OpenDay + 1 >= heroConfig.OpenCollectionDay;
    }
    /// <summary>
    /// 检查羁绊组合中所有武将是否都满足开服展示天数
    /// 只有配置了开服天限制的武将才需要检查,未配置限制的武将视为满足
    /// </summary>
    /// <param name="fetterConfig">羁绊配置</param>
    /// <returns>true: 所有武将都满足; false: 有武将不满足</returns>
    public static bool IsFetterAllHeroOpen(HeroFetterConfig fetterConfig)
    {
        for (int i = 0; i < fetterConfig.HeroIDList.Length; i++)
        {
            int heroID = fetterConfig.HeroIDList[i];
            // 有限制但未满足 -> 该羁绊不可显示
            if (HasOpenCollectionDayLimit(heroID) && !IsOpenCollectionDayMet(heroID))
                return false;
        }
        return true;
    }
    #endregion
    #endregion
}