yyl
2025-10-31 39001a600fcae2bcf27c225df8752d75fb92fef4
Main/System/HeroUI/HeroUIManager.OnTeam.cs
@@ -292,12 +292,8 @@
    //推荐阵容
    public List<string> SelectRecommend()
    {
        //推荐阵容的算法逻辑
        //自动选择优先级:武将等级>突破等级>武将觉醒阶级>武将品质>武将吞噬星级>武将ID
        var tmpList = HeroManager.Instance.GetHeroGuidList();
        tmpList.Sort(CmpHeroRecommend);
        //推荐最多6个,存在相同heroid,则跳过
        List<string> selectHeroList = new List<string>();
        List<int> selectHeroIDList = new List<int>();
@@ -309,6 +305,7 @@
            string guid = tmpList[i];
            HeroInfo heroInfo = HeroManager.Instance.GetHero(guid);
            if (selectHeroIDList.Contains(heroInfo.heroId))
                //重复英雄
                continue;
            //如果重复了,跳过
            if (selectHeroList.Contains(guid))
@@ -316,10 +313,16 @@
            selectHeroList.Add(guid);
            selectHeroIDList.Add(heroInfo.heroId);
        }
        // 再按 肉盾>控制>输出>辅助
        selectHeroList.Sort(CmpByJob);
        return selectHeroList;
    }
    //!!!新排序规则
    //若在新手引导(引导ID)中,如果5号位为空,则优先放置5号位
    //按战力排序
    int CmpHeroRecommend(string guidA, string guidB)
    {
        HeroInfo heroA = HeroManager.Instance.GetHero(guidA);
@@ -329,29 +332,46 @@
            return 0;
        }
        // 排序规则:武将等级>突破等级>武将觉醒阶级>武将品质>武将吞噬星级>武将ID
        if (heroA.heroLevel != heroB.heroLevel)
        {
            return heroA.heroLevel > heroB.heroLevel ? -1 : 1;
        }
        if (heroA.breakLevel != heroB.breakLevel)
        {
            return heroA.breakLevel > heroB.breakLevel ? -1 : 1;
        }
        if (heroA.awakeLevel != heroB.awakeLevel)
        {
            return heroA.awakeLevel > heroB.awakeLevel ? -1 : 1;
        }
        if (heroA.Quality != heroB.Quality)
        {
            return heroA.Quality > heroB.Quality ? -1 : 1;
        }
        if (heroA.heroStar != heroB.heroStar)
        {
            return heroA.heroStar > heroB.heroStar ? -1 : 1;
        }
        // // 排序规则:武将等级>突破等级>武将觉醒阶级>武将品质>武将吞噬星级>武将ID
        // if (heroA.heroLevel != heroB.heroLevel)
        // {
        //     return heroA.heroLevel > heroB.heroLevel ? -1 : 1;
        // }
        // if (heroA.breakLevel != heroB.breakLevel)
        // {
        //     return heroA.breakLevel > heroB.breakLevel ? -1 : 1;
        // }
        // if (heroA.awakeLevel != heroB.awakeLevel)
        // {
        //     return heroA.awakeLevel > heroB.awakeLevel ? -1 : 1;
        // }
        // if (heroA.Quality != heroB.Quality)
        // {
        //     return heroA.Quality > heroB.Quality ? -1 : 1;
        // }
        // if (heroA.heroStar != heroB.heroStar)
        // {
        //     return heroA.heroStar > heroB.heroStar ? -1 : 1;
        // }
        return heroA.heroId.CompareTo(heroB.heroId);
        return heroB.CalculateFightPower(false).CompareTo(heroA.CalculateFightPower(false));
    }
    int CmpByJob(string guidA, string guidB)
    {
        HeroInfo heroA = HeroManager.Instance.GetHero(guidA);
        HeroInfo heroB = HeroManager.Instance.GetHero(guidB);
        if (heroA == null || heroB == null)
        {
            return 0;
        }
        int indexA = Array.IndexOf(teamSortByJob, heroA.heroConfig.Class);
        int indexB = Array.IndexOf(teamSortByJob, heroB.heroConfig.Class);
        return indexA.CompareTo(indexB);
    }
@@ -362,6 +382,10 @@
    public int[][] lockHeroCountLimit;
    public List<int> lockIndexList = new List<int>();
    public int[] teamSortByJob;
    public int onekeyGuideID;
    public int[] onekeyGuidePosList; //一键上阵在引导下的顺序
    public Action OnUnLockHeroCountEvent;
    public int lockState
    {