yyl
2025-09-11 9919c1f6f91d61e576ea37b459e489a790a89407
Main/System/Battle/BattleManager.cs
@@ -289,6 +289,7 @@
        if (!battleReportDict.TryGetValue(guid, out queue))
        {
            queue = new Queue<GameNetPackBasic>();
            battleReportDict.Add(guid, queue);
        }
        queue.Enqueue(vNetPack);
@@ -301,7 +302,26 @@
            battlePackRelationList.Add(guid, uidList);
        }
        if (!uidList.Contains(vNetPack.packUID))
        {
        uidList.Add(vNetPack.packUID);
        }
    }
    public void PushPackUID(string guid, ulong packUID)
    {
        List<ulong> uidList = null;
        if (!battlePackRelationList.TryGetValue(guid, out uidList))
        {
            uidList = new List<ulong>();
            battlePackRelationList.Add(guid, uidList);
        }
        if (!uidList.Contains(packUID))
        {
            uidList.Add(packUID);
        }
    }
    public BattleField GetBattleField(ulong packUID)
@@ -332,6 +352,7 @@
    {
        Queue<GameNetPackBasic> queue = null;
        if (!battleReportDict.TryGetValue(guid, out queue))
        {
            BattleDebug.LogError("DistributeNextReportPackage could not find queue for guid : " + guid);
@@ -340,7 +361,32 @@
        var pack = queue.Dequeue();
        // Debug.LogError("DistributeNextReportPackage for guid : " + guid + " pack type : " + pack.GetType());
        try
        {
            if (pack is CustomHB426CombinePack combinePack)
            {
                combinePack.Distribute();
            }
            else if (pack is CustomB421ActionPack actionPack)
            {
                actionPack.Distribute();
            }
            else
            {
        PackageRegedit.Distribute(pack);
            }
        }
        catch (Exception ex)
        {
            Debug.LogError("DistributeNextPackage: 分发包异常 " + ex);
            // 出错时主动移除当前包,防止死循环
            if (packQueue.Count > 0)
            {
                packQueue.Dequeue();
            }
        }
        if (queue.Count <= 0)
        {
@@ -397,14 +443,13 @@
            return;
        }
        onBattleFieldDestroy?.Invoke(battleField.guid, battleField);
        battleField.Release();
        string guid = battleField.guid;
        if (battleFields.ContainsKey(guid))
        {
            battleFields.Remove(guid);
        }
        battleReportDict.Remove(guid);
        battlePackRelationList.Remove(guid);
        if (storyBattleField == battleField)
        {
@@ -412,6 +457,9 @@
        }
        GameObject.DestroyImmediate(battleField.battleRootNode.gameObject);
        onBattleFieldDestroy?.Invoke(battleField.guid, battleField);
    }