hch
8 天以前 502382d9a6d487a4077e174a4adb4b9987cf4d01
306 子 【新手】细节优化 / 新手一键上阵位置调整
11个文件已修改
130 ■■■■ 已修改文件
Main/System/Hero/HeroInfo.Properties.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroManager.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroGiftEatWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroLVBreakWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroPosWin.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroTrainWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.OnTeam.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.Reborn.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/PlayerMainDate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Team/TeamBase.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroInfo.Properties.cs
@@ -107,7 +107,7 @@
    long tmpFightPower = 0;
    public long CalculatePower(bool forceRefresh = true)
    public long CalculateFightPower(bool forceRefresh = true)
    {
        if (forceRefresh || tmpFightPower == 0)
        { 
Main/System/Hero/HeroManager.cs
@@ -116,8 +116,8 @@
        heroList.Sort((a, b) =>
        {
            long power1 = a.CalculatePower(false);
            long power2 = b.CalculatePower(false);
            long power1 = a.CalculateFightPower(false);
            long power2 = b.CalculateFightPower(false);
            if (power1 == power2)
            {
Main/System/HeroUI/HeroGiftEatWin.cs
@@ -128,7 +128,7 @@
        HeroUIManager.Instance.selectHeroGuidForGiftFuncForSuccessWin = HeroUIManager.Instance.selectHeroGuidForGiftFunc;
        HeroUIManager.Instance.heroBeforeGiftIDList = new List<int>(hero.talentIDList);
        HeroUIManager.Instance.heroBeforeGiftLevelList = new List<int>(hero.talentLvList);
        HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
        HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false));
        //设置个等待回复的标识 显示成功界面
        HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse()
Main/System/HeroUI/HeroLVBreakWin.cs
@@ -106,7 +106,7 @@
            var pack = new CB232_tagCSHeroBreak();
            pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
            GameNetSystem.Instance.SendInfo(pack);
            HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
            HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false));
            CloseWindow();
            //设置个等待回复的标识 显示成功界面
            HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse()
Main/System/HeroUI/HeroPosWin.cs
@@ -472,10 +472,33 @@
        var guidList = HeroUIManager.Instance.SelectRecommend();
        var team = TeamManager.Instance.GetTeam(HeroUIManager.Instance.selectTeamType);
        team.RemoveAllHeroes();
        for (int i = 0; i < guidList.Count; i++)
        if (NewBieCenter.Instance.inGuiding && NewBieCenter.Instance.currentGuide == HeroUIManager.Instance.onekeyGuideID)
        {
            team.AddHero(HeroManager.Instance.GetHero(guidList[i]), i, true);
            //第二个强制排在5号位
            if (guidList.Count > 1)
            {
                team.AddHero(HeroManager.Instance.GetHero(guidList[1]), 4, true);
                guidList.RemoveAt(1);
            }
            for (int i = 0; i < guidList.Count; i++)
            {
                int index = i;
                if (i >= 4)
                {
                    index = i + 1;
                }
                team.AddHero(HeroManager.Instance.GetHero(guidList[i]), index, true);
            }
        }
        else
        {
            for (int i = 0; i < guidList.Count; i++)
            {
                team.AddHero(HeroManager.Instance.GetHero(guidList[i]), i, true);
            }
        }
        TeamChangeEvent(new List<int>() { 0, 1, 2, 3, 4, 5 }, -1, Vector3.zero);
Main/System/HeroUI/HeroTrainWin.cs
@@ -225,7 +225,7 @@
        jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(hero.heroConfig.Class));
        jobPosNameText.text = HeroUIManager.Instance.GetJobName(hero.heroConfig.Class);
        descText.text = hero.heroConfig.Desc;
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower());
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculateFightPower());
        PlayerMainDate.Instance.AddPowerNotOnTeam(hero);
        lockImg.SetActive(hero.isLock);
        unLockImg.SetActive(!hero.isLock);
@@ -468,7 +468,7 @@
                    ReturnCell(cell);
                });
                HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
                HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false));
            }
        }
@@ -712,7 +712,7 @@
    {
        if (teamType != TeamType.Story)
            return;
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculatePower());
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculateFightPower());
    }
    void RefreshFreeze()
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 onekeyGuideFirstPos; //一键上阵在引导下的最优先推荐位置
    public Action OnUnLockHeroCountEvent;
    public int lockState
    {
Main/System/HeroUI/HeroUIManager.Reborn.cs
@@ -265,7 +265,7 @@
        pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
        GameNetSystem.Instance.SendInfo(pack);
        lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
        lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false));
    }
}
Main/System/HeroUI/HeroUIManager.cs
@@ -69,6 +69,10 @@
        config = FuncConfigConfig.Get("HeroOnTeam");
        lockHeroCountLimit = JsonMapper.ToObject<int[][]>(config.Numerical1);
        teamSortByJob = JsonMapper.ToObject<int[]>(config.Numerical2);
        onekeyGuideID = int.Parse(config.Numerical3);
        onekeyGuideFirstPos = int.Parse(config.Numerical4);
    }
    public void OnBeforePlayerDataInitialize()
Main/System/Main/PlayerMainDate.cs
@@ -109,7 +109,7 @@
            return;
        }
        prowNum = hero.CalculatePower();
        prowNum = hero.CalculateFightPower();
        prowNumChange = prowNum - HeroUIManager.Instance.lastFightPower.Value;
        HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>();
        isAdd = prowNumChange > 0;
Main/System/Team/TeamBase.cs
@@ -345,6 +345,7 @@
    }
    
    //checkLock :是否验证上阵人数限制
    //targetPosition 从0开始
    public void AddHero(HeroInfo heroInfo, int targetPosition, bool checkLock)
    {
        if (targetPosition < 0 || targetPosition >= tempHeroes.Length)