yyl
2 天以前 66c8ccb8a2ee5355ed7a9fb66b81ef0aad70fee3
125 跳过战斗修改
4个文件已修改
57 ■■■■■ 已修改文件
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/BattleField.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleManager.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/RecordPlayer/RecordPlayer.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
@@ -34,6 +34,8 @@
            // 1. 解析战报字节流,提取所有包
            List<GameNetPackBasic> vPackList = ParseReportBytes(vNetData.reportBytes, guid);
            HB420_tagMCTurnFightState endPack = vPackList.Find(x => x is HB420_tagMCTurnFightState state && state.State == 4) as HB420_tagMCTurnFightState;
#if UNITY_EDITOR
            // 2. 保存解析前的包详情(调试用)
            SavePackageDetailBeforeAnalysis(vPackList, guid);
@@ -47,7 +49,7 @@
#endif
            // 5. 将包推送到战场队列
            PushPackagesToBattle(guid, vPackList);
            PushPackagesToBattle(guid, vPackList, endPack);
            // 6. 通知战场开始分发包
            canAddPack = false;
@@ -214,12 +216,13 @@
    /// <summary>
    /// 将所有包推送到战场管理器队列
    /// </summary>
    private void PushPackagesToBattle(string guid, List<GameNetPackBasic> vPackList)
    private void PushPackagesToBattle(string guid, List<GameNetPackBasic> vPackList, HB420_tagMCTurnFightState endPack)
    {
        for (int i = 0; i < vPackList.Count; i++)
        {
            BattleManager.Instance.PushPackage(guid, vPackList[i]);
        }
        BattleManager.Instance.SetEndPack(guid, endPack);
    }
#if UNITY_EDITOR
Main/System/Battle/BattleField/BattleField.cs
@@ -831,7 +831,16 @@
    public void ForceFinish()
    {
        recordPlayer.ForceFinish();
        var endPack = BattleManager.Instance.GetEndPack(guid);
        if (endPack != null)
        {
            recordPlayer.ClearAllRecordAction();
            PackageRegedit.Distribute(endPack);
        }
        else
        {
            recordPlayer.ForceFinish();
        }
    }
Main/System/Battle/BattleManager.cs
@@ -375,6 +375,9 @@
    protected Dictionary<string, Queue<GameNetPackBasic>> battleReportDict = new Dictionary<string, Queue<GameNetPackBasic>>();
    protected Dictionary<string, List<ulong>> battlePackRelationList = new Dictionary<string, List<ulong>>();
    // 存储每个 guid 对应的结束状态包(HB420 State==4 等)
    protected Dictionary<string, HB420_tagMCTurnFightState> battleEndPackDict = new Dictionary<string, HB420_tagMCTurnFightState>();
    public void PushPackage(string guid, GameNetPackBasic vNetPack)
    {
@@ -550,6 +553,10 @@
        battleFields.Remove(guid);
        battleReportDict.Remove(guid);
        battlePackRelationList.Remove(guid);
        // 清理结束包字典中的记录,防止内存泄漏或旧数据残留
        if (battleEndPackDict != null && battleEndPackDict.ContainsKey(guid))
            battleEndPackDict.Remove(guid);
        if (storyBattleField == battleField)
        {
@@ -748,4 +755,28 @@
        }
        return null;
    }
    public void SetEndPack(string guid, HB420_tagMCTurnFightState endPack)
    {
        if (string.IsNullOrEmpty(guid))
            return;
        if (endPack == null)
        {
            if (battleEndPackDict.ContainsKey(guid))
                battleEndPackDict.Remove(guid);
            return;
        }
        // 存储或更新结束包
        battleEndPackDict[guid] = endPack;
    }
    public HB420_tagMCTurnFightState GetEndPack(string guid)
    {
        if (string.IsNullOrEmpty(guid)) return null;
        if (battleEndPackDict.TryGetValue(guid, out var pack))
            return pack;
        return null;
    }
}
Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -352,6 +352,14 @@
        ForceFinish();
    }
    public void ClearAllRecordAction()
    {
        currentRecordAction?.ForceFinish();
        currentRecordAction = null;
        recordActionQueue.Clear();
        immediatelyActionList.Clear();
    }
    public void EnableForceFinish(bool enable)
    {
        stepForcefinish = enable;