yyl
2025-08-11 7514dbcbb81bcbf8a517d14b0e4ddcf12c27457e
Main/System/Battle/BattleManager.cs
@@ -1,9 +1,7 @@
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System;
public class BattleManager : GameSystemManager<BattleManager>
{
@@ -14,10 +12,13 @@
    protected LogicUpdate logicUpdate = new LogicUpdate();
    public Action<string, BattleField> onBattleFieldCreate;
    public Action<string, BattleField> onBattleFieldDestroy;
    public override void Init()
    {
        base.Init();
        // StartStoryBattle();
        logicUpdate.Start(Run);
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
    }
@@ -64,7 +65,6 @@
    {
    }
    #region 截断网络派发包 只收入当前包的后续 b425是主线的 非主线的包并不会走b425
    private bool allow = true;
@@ -116,10 +116,13 @@
        List<GameNetPackBasic> packQueueSnapshot = new List<GameNetPackBasic>(packQueue);
        List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
        HashSet<int> skipIndexes = new HashSet<int>();
        // 这里已经是按照Dequeue的顺序了
        for (int i = 0; i < packQueueSnapshot.Count; i++)
        {
            if (skipIndexes.Contains(i)) continue;
            GameNetPackBasic pack = packQueueSnapshot[i];
            // 碰到B421 截断 往下收集b421里的全部内容
@@ -128,7 +131,6 @@
                HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
                List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
                i++;    // 跳过当前的B421包
                for (; i < packQueueSnapshot.Count; i++)
@@ -144,17 +146,14 @@
                    else
                    {
                        b421PackList.Add(nextPack);
                        skipIndexes.Add(i); // 标记已被合包
                    }
                }
                // 可能没用了 主要就是利用一下skill的combine 暂留 看之后还有没有别的需求
                CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList);
                while (actionPack.actionPacks.Count > 0)
                {
                    GameNetPackBasic actionPackItem = actionPack.actionPacks.Dequeue();
                    newPackList.Add(actionPackItem);
                }
                newPackList.Add(actionPack);
            }
            else
            {
@@ -187,6 +186,7 @@
        DistributeNextPackage();
    }
    //  专属于主线战斗的派发
    public bool DistributeNextPackage()
    {
        if (packQueue.Count > 0)
@@ -197,6 +197,11 @@
            {
                CustomHB426CombinePack combinePack = pack as CustomHB426CombinePack;
                combinePack.Distribute();
            }
            else if (pack is CustomB421ActionPack)
            {
                CustomB421ActionPack actionPack = pack as CustomB421ActionPack;
                actionPack.Distribute();
            }
            else
            {
@@ -264,8 +269,6 @@
        return battleField;
    }
    public string GetGUID(ulong packUID)
    {
        foreach (var kv in battlePackRelationList)
@@ -277,7 +280,6 @@
        }
        return string.Empty;
    }
    public void DistributeNextReportPackage(string guid)
    {
@@ -311,6 +313,8 @@
        battleField = BattleFieldFactory.CreateBattleField(guid, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
        onBattleFieldCreate?.Invoke(guid, battleField);
        if (string.IsNullOrEmpty(guid))
        {
            storyBattleField = (StoryBattleField)battleField;
@@ -331,6 +335,8 @@
            return;
        }
        onBattleFieldDestroy?.Invoke(battleField.guid, battleField);
        string guid = battleField.guid;
        if (battleFields.ContainsKey(guid))
@@ -342,6 +348,8 @@
        {
            storyBattleField = null;
        }
        GameObject.DestroyImmediate(battleField.battleRootNode.gameObject);
    }
@@ -363,11 +371,6 @@
    public void Run()
    {
        // if (null != storyBattleField)
        // {
        //     storyBattleField.Run();
        // }
        foreach (var battleField in battleFields)
        {
            battleField.Value?.Run();