hch
1 天以前 acab2a61380638fd374ad2d0a5d4caff84aa7cdc
0312 优化引导,在引导前先处理装备,然后再出现引导
3个文件已修改
46 ■■■■ 已修改文件
Main/Config/Configs/GuideConfig.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/StoryBattleField.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/NewBieGuidance/NewBieCenter.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/GuideConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           2025年10月11日
//    [  Date ]:           Thursday, November 13, 2025
//--------------------------------------------------------
using System.Collections.Generic;
@@ -24,6 +24,8 @@
    public int PreGuideId;
    public int[] Steps;
    public int NoRecord;
    public int Priority;
    public int PauseMainBattle;
    public override int LoadKey(string _key)
    {
@@ -62,6 +64,10 @@
            }
            int.TryParse(tables[7],out NoRecord); 
            int.TryParse(tables[8],out Priority);
            int.TryParse(tables[9],out PauseMainBattle);
        }
        catch (Exception exception)
        {
Main/System/Battle/BattleField/StoryBattleField.cs
@@ -323,7 +323,7 @@
    //暂停的原因有很多,需要检查各种状态
    protected override bool CanResumeGame()
    {
        if (NewBieCenter.Instance.IsNeedRecord(NewBieCenter.Instance.currentGuide))
        if (NewBieCenter.Instance.IsPauseMainBattle(NewBieCenter.Instance.currentGuide))
        {
            return false;
        }
Main/System/NewBieGuidance/NewBieCenter.cs
@@ -25,7 +25,7 @@
    public bool inGuiding
    {
        // 当前有引导,并且不是暂停状态,则在引导中
        get { return currentGuide != 0 && IsNeedRecord(currentGuide); }
        get { return currentGuide != 0 && IsPauseMainBattle(currentGuide); }
    }
    List<int> allGuides = new List<int>();
@@ -203,10 +203,11 @@
            return false;
        }
        if (currentGuide != 0 && GuideConfig.Get(currentGuide).NoRecord == 0)
        int curPriority = -1;
        var curGuide = GuideConfig.Get(currentGuide);
        if (curGuide != null)
        {
            // 可重复触发的引导属于低优先级 会被新引导替换
            return false;
            curPriority = curGuide.Priority;
        }
        for (int i = 0; i < _guides.Count; i++)
@@ -224,8 +225,15 @@
                continue;
            }
            if (config.Priority <= curPriority)
            {
                // 高优先级才可以打断低的
                continue;
            }
            if (currentGuide != guideId && CheckGuideCondition(guideId, isOrgTrigger))
            {
                return StartNewBieGuide(guideId);
            }
        }
@@ -234,11 +242,13 @@
    }
    bool WaitGuide(int _id)
    bool WaitGuide(GuideConfig config)
    {
        var config = GuideConfig.Get(_id);
        //要引导的界面上有其他界面盖住,加入队列等待其他界面关闭的时候再触发该界面引导
        if (UIManager.Instance.ExistAnyFullScreenOrMaskWinAbove(config.WinName))
        // 或者等待拾取装备后再引导
        if (UIManager.Instance.ExistAnyFullScreenOrMaskWinAbove(config.WinName) ||
            (config.PauseMainBattle == 1 && PackManager.Instance.GetItems(PackType.DropItem).Count > 0
            && config.WinName != "EquipExchangeWin"))
        {
            //如果子界面是必须挂在该界面上切且没有蒙版盖住的可以增加判断
            if (!waitGuideWinNames.Contains(config.WinName))
@@ -269,7 +279,7 @@
            return false;
        }
        if (WaitGuide(_id))
        if (WaitGuide(config))
        {
            return false;
        }
@@ -313,6 +323,16 @@
    }
    public bool IsPauseMainBattle(int _id)
    {
        var config = GuideConfig.Get(_id);
        if (config == null)
        {
            return false;
        }
        return GuideConfig.Get(_id).PauseMainBattle == 1;
    }
    //非0代表 可重复引导,且优先级低会被新引导替换,且不暂停主线战斗
    public bool IsNeedRecord(int _id)
    {