From 66c8ccb8a2ee5355ed7a9fb66b81ef0aad70fee3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 30 一月 2026 20:04:29 +0800
Subject: [PATCH] 125 跳过战斗修改
---
Main/System/Battle/BattleField/BattleField.cs | 11 ++++++++++-
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 8 ++++++++
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs | 7 +++++--
Main/System/Battle/BattleManager.cs | 31 +++++++++++++++++++++++++++++++
4 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
index 28d9ef3..2ee638b 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
@@ -34,6 +34,8 @@
// 1. 瑙f瀽鎴樻姤瀛楄妭娴侊紝鎻愬彇鎵�鏈夊寘
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. 淇濆瓨瑙f瀽鍓嶇殑鍖呰鎯咃紙璋冭瘯鐢級
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
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 6435401..598ae12 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/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();
+ }
}
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index facc2d5..e2cd57f 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/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 瀵瑰簲鐨勭粨鏉熺姸鎬佸寘锛圚B420 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;
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 97204c3..0113d72 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/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;
--
Gitblit v1.8.0