yyl
2025-08-07 d767a5a0efbac267507be14b5b09bd64015fe560
Main/System/Battle/BattleField/StoryBattleField.cs
@@ -3,6 +3,20 @@
using UnityEngine;
using System.Collections.Generic;
// 【主线战斗流程】
// 发送 B413  (ReqType 为 2 或 3)
//        后端回复  B425标记0开始   (中间N个战斗片段封包)  B425标记1结束
// 前端解析 N个战斗片段封包  ,拆解成前端支持的action指令,然后进行战斗表现
// 表现完毕后继续发送 B413  (ReqType 为 4)
//        后端回复  B425标记0开始   (中间N个战斗片段封包)  B425标记1结束
// 前端解析表现,然后一直循环即可
public enum StoryBattleState
{
    Break,
    Battle,
}
public class StoryBattleField : BattleField
{
    protected int chapter;//   章节
@@ -14,15 +28,26 @@
    protected MainLevelConfig levelConfig;
    public StoryBattleState battleState;
    public StoryBattleField() : base(string.Empty)
    {
    }
    public override void Init(int MapID, int FuncLineID, JsonData _extendData,
    public override void Init(int MapID, int FuncLineID, JsonData _extendData,
        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
    {
        base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList);
        if (null == _blueTeamList || _blueTeamList.Count == 0)
        {
            battleState = StoryBattleState.Break;
        }
        else
        {
            battleState = StoryBattleState.Battle;
        }
        LoadBattleMode();
@@ -34,6 +59,13 @@
        chapterConfig = MainChapterConfig.Get(chapter);
        levelConfig = MainLevelConfig.Get(level);
        TeamManager.Instance.OnTeamChange += OnTeamChange;
    }
    public override void Release()
    {
        base.Release();
        TeamManager.Instance.OnTeamChange -= OnTeamChange;
    }
    protected void LoadBattleMode()
@@ -46,7 +78,7 @@
        SetBattleMode((BattleMode)Enum.Parse(typeof(BattleMode), savedStr));
    }
    public override void TurnFightState(int TurnNum, int State,
    public override void TurnFightState(int TurnNum, int State,
        uint FuncLineID, JsonData extendData)
    {
        base.TurnFightState(TurnNum, State, FuncLineID, extendData);
@@ -80,7 +112,34 @@
    public override void OnTurnFightState(int turnNum, int State, int FuncLineID, JsonData extendData)
    {
        base.OnTurnFightState(turnNum, State, FuncLineID, extendData);
    }
    protected void OnTeamChange(TeamType teamType)
    {
        if (teamType == TeamType.Story)
        {
            if (battleState == StoryBattleState.Break)
            {
                ReloadTeam();
            }
        }
    }
    public override void HaveRest()
    {
        base.HaveRest();
        battleState = StoryBattleState.Break;
    }
    protected void ReloadTeam()
    {
        battleObjMgr.ReloadTeam(TeamManager.Instance.GetTeam(TeamType.Story), BattleCamp.Red);
    }
    public override void OnBattleEnd(JsonData turnFightStateData)
    {
        base.OnBattleEnd(turnFightStateData);
    }
    // public override void Run()