| Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/BattleField/BattleField.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/BattleManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/RecordPlayer/RecordPlayer.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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;