hch
2025-10-22 af6e207c6d185ed66125e85e18c02c63bea597f9
Main/System/Battle/BattleManager.cs
@@ -24,9 +24,13 @@
        }
    }
    public int fightGuideID;
    public int fightGuideMainLevelLimit;
    public int fightGuideNoClickSeconds;
    public Action<string, BattleField> onBattleFieldCreate;
    public Action<string, BattleField> onBattleFieldDestroy;
    public Action onBattleFieldDestroy;
    public bool isWaitServerStory = false;  //主线等服务端回报 0425
@@ -45,6 +49,11 @@
    {
        var config = FuncConfigConfig.Get("AutoGuaji");
        speedGear = JsonMapper.ToObject<float[]>(config.Numerical4);
        config = FuncConfigConfig.Get("FightGuide");
        fightGuideID = int.Parse(config.Numerical1);
        fightGuideMainLevelLimit = int.Parse(config.Numerical2);
        fightGuideNoClickSeconds = int.Parse(config.Numerical3);
    }
@@ -84,7 +93,11 @@
            redTeamList.Add(storyTeam);
            CreateBattleField(string.Empty, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
            HB424_tagSCTurnFightInit vNetData = new HB424_tagSCTurnFightInit();
            vNetData.MapID = (uint)MapID;
            vNetData.FuncLineID = (uint)FuncLineID;
            CreateBattleField(string.Empty, vNetData, extendData, redTeamList, blueTeamList);
        }
        else
        {
@@ -455,9 +468,12 @@
    }
    #endregion
    public BattleField CreateBattleField(string guid, int MapID, int FuncLineID, JsonData extendData, List<TeamBase> redTeamList, List<TeamBase> blueTeamList)
    public BattleField CreateBattleField(string guid, HB424_tagSCTurnFightInit vNetData, JsonData extendData, List<TeamBase> redTeamList, List<TeamBase> blueTeamList)
    {
        BattleField battleField = null;
        int MapID = (int)vNetData.MapID;
        int FuncLineID = (int)vNetData.FuncLineID;
        bool isCreate = true;
        if (battleFields.TryGetValue(guid, out battleField))
@@ -475,7 +491,7 @@
        }
        if (isCreate)
        {
        {
            battleField = BattleFieldFactory.CreateBattleField(guid, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
            if (string.IsNullOrEmpty(guid))
@@ -488,7 +504,7 @@
        battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList);
        battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList, vNetData.TurnMax);
        return battleField;
    }
@@ -516,7 +532,7 @@
        GameObject.DestroyImmediate(battleField.battleRootNode.gameObject);
        onBattleFieldDestroy?.Invoke(battleField.guid, battleField);
        onBattleFieldDestroy?.Invoke();
    }
@@ -569,4 +585,41 @@
        return null;
    }
    /// <summary>
    /// 检查是否有非主线战斗(如竞技场、白骨等)正在进行
    /// </summary>
    /// <returns>如果有任何非主线战斗且未结束,则返回true</returns>
    public bool IsOtherBattleInProgress()
    {
        foreach (var kvp in battleFields)
        {
            BattleField battleField = kvp.Value;
            // 检查战场是否有效且尚未结束
            if (battleField == null || battleField.IsBattleFinish)
                continue;
            // MapID 1 (StoryBattleField) 和 2 (StoryBossBattleField) 都是主线
            if (battleField.MapID == 1 || battleField.MapID == 2)
                continue;
            return true;
        }
        return false;
    }
    // 获取当前正在显示的战斗场景名称,如果没有则返回空字符串
    public string GetActiveBattleName()
    {
        foreach (var kvp in battleFields)
        {
            BattleField battleField = kvp.Value;
            if (battleField == null)
                continue;
            var battleName = battleField.ToString();
            if (BattleConst.battleNameToWinName.ContainsKey(battleName)
            && UIManager.Instance.IsOpened(BattleConst.battleNameToWinName[battleName]))
                return battleName;
        }
        return "";
    }
}