From 640e6447e7864730c56ffc5597c9a599945af45d Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 21 十一月 2025 16:40:04 +0800
Subject: [PATCH] 125 战斗 1.流血伤害 2.修复技能卡死问题 3.添加战斗回放(Editor)
---
Assets/Editor/UI/GMQuickPlayingEditor.cs | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 0 deletions(-)
diff --git a/Assets/Editor/UI/GMQuickPlayingEditor.cs b/Assets/Editor/UI/GMQuickPlayingEditor.cs
index 795ec87..51f586f 100644
--- a/Assets/Editor/UI/GMQuickPlayingEditor.cs
+++ b/Assets/Editor/UI/GMQuickPlayingEditor.cs
@@ -2,19 +2,32 @@
using UnityEditor;
using System.Collections.Generic;
using System.Linq;
+using System.IO;
public class GMQuickPlayingEditor : EditorWindow
{
private string searchText = "";
private string commandText = "";
private Vector2 scrollPosition;
+ private Vector2 reportScrollPosition;
private List<ItemConfig> searchResults = new List<ItemConfig>();
private int itemCount = 1;
+ private bool isBattlePaused = false;
+
+ // 鎴樻姤鐩稿叧
+ private string reportFilePath = "";
+ private string[] reportFiles = new string[0];
+ private int selectedReportIndex = 0;
[MenuItem("Tools/GM蹇嵎宸ュ叿 &9")]
public static void ShowWindow()
{
GetWindow<GMQuickPlayingEditor>("GM蹇嵎宸ュ叿");
+ }
+
+ private void OnEnable()
+ {
+ RefreshReportList();
}
private void OnGUI()
@@ -108,7 +121,122 @@
warningStyle.fontSize = 11;
EditorGUILayout.LabelField("鈿� 娣诲姞鐗╁搧鏈�濂借窡鏈嶅姟鍣ㄧ‘璁よ繃鐗╁搧鐨勫瓨鍦ㄥ悗鍐嶆坊鍔�", warningStyle);
+ GUILayout.Space(10);
+
+ // 鎴樻姤娴忚鍖哄煙
+ GUILayout.Label("鎴樻姤娴忚", EditorStyles.boldLabel);
+ GUILayout.BeginVertical("box");
+
+ GUILayout.BeginHorizontal();
+ if (GUILayout.Button("鍒锋柊鎴樻姤鍒楄〃", GUILayout.Width(120)))
+ {
+ RefreshReportList();
+ }
+ if (GUILayout.Button("鎵撳紑鎴樻姤鏂囦欢澶�", GUILayout.Width(120)))
+ {
+ OpenReportFolder();
+ }
+ GUILayout.EndHorizontal();
+
+ GUILayout.Space(5);
+
+ if (reportFiles.Length > 0)
+ {
+ reportScrollPosition = GUILayout.BeginScrollView(reportScrollPosition, GUILayout.Height(150));
+
+ for (int i = 0; i < reportFiles.Length; i++)
+ {
+ GUILayout.BeginHorizontal("box");
+ string fileName = Path.GetFileName(reportFiles[i]);
+ GUILayout.Label(fileName, GUILayout.Width(300));
+
+ if (GUILayout.Button("鍔犺浇骞禗istribute", GUILayout.Width(60)))
+ {
+ LoadReport(reportFiles[i]);
+ }
+
+
+ GUILayout.EndHorizontal();
+ }
+
+ GUILayout.EndScrollView();
+ }
+ else
+ {
+ GUILayout.Label("鏈壘鍒版垬鎶ユ枃浠讹紙.bytes锛�");
+ }
+
GUILayout.EndVertical();
+
+ GUILayout.Space(10);
+
+ // 鏆傚仠/寮�濮嬫垬鏂楁寜閽�
+ GUILayout.BeginHorizontal();
+ GUILayout.FlexibleSpace();
+ string buttonText = isBattlePaused ? "寮�濮嬪綋鍓嶆垬鏂�" : "鏆傚仠褰撳墠鎴樻枟";
+ if (GUILayout.Button(buttonText, GUILayout.Width(120), GUILayout.Height(30)))
+ {
+ OnPauseBattle();
+ }
+ GUILayout.FlexibleSpace();
+ GUILayout.EndHorizontal();
+
+ GUILayout.EndVertical();
+ }
+
+ private void RefreshReportList()
+ {
+ string reportFolder = Application.dataPath + "/../BattleReport/";
+ if (Directory.Exists(reportFolder))
+ {
+ reportFiles = Directory.GetFiles(reportFolder, "*.bytes");
+ Debug.Log($"鎵惧埌 {reportFiles.Length} 涓垬鎶ユ枃浠�");
+ }
+ else
+ {
+ Directory.CreateDirectory(reportFolder);
+ reportFiles = new string[0];
+ Debug.Log("鍒涘缓鎴樻姤鏂囦欢澶�: " + reportFolder);
+ }
+ }
+
+ private void OpenReportFolder()
+ {
+ string reportFolder = Application.dataPath + "/../BattleReport/";
+ if (!Directory.Exists(reportFolder))
+ {
+ Directory.CreateDirectory(reportFolder);
+ }
+ EditorUtility.RevealInFinder(reportFolder);
+ }
+
+ private void LoadReport(string filePath)
+ {
+ if (!File.Exists(filePath))
+ {
+ Debug.LogError("鎴樻姤鏂囦欢涓嶅瓨鍦�: " + filePath);
+ return;
+ }
+
+ reportFilePath = filePath;
+ Debug.Log("宸插姞杞芥垬鎶�: " + Path.GetFileName(filePath));
+
+ HB430_tagSCTurnFightReport hB430_TagSCTurnFightReport = new HB430_tagSCTurnFightReport();
+ byte[] vBytes = File.ReadAllBytes(filePath);
+ hB430_TagSCTurnFightReport.ReadFromBytes(vBytes);
+ PackageRegedit.Distribute(hB430_TagSCTurnFightReport);
+ }
+
+ private string ExtractGuidFromFileName(string fileName)
+ {
+ // 浠庢枃浠跺悕涓彁鍙� GUID
+ // 鏍煎紡: B430_ReportBytes_{GUID}_{DateTime}
+ string[] parts = fileName.Split('_');
+ if (parts.Length >= 3)
+ {
+ return parts[2]; // 杩斿洖 GUID 閮ㄥ垎
+ }
+ return "unknown_guid";
}
private void OnSearchItem()
@@ -156,4 +284,33 @@
GMCmdManager.Instance.OnSendGMQuest(commandText);
GMCmdManager.Instance.SetRecordCmdlist(commandText);
}
+
+ private void OnPauseBattle()
+ {
+ for (int i = 0; i < BattleConst.BattleWindows.Count; i++)
+ {
+ var win = UIManager.Instance.GetUI(BattleConst.BattleWindows[i].Name);
+ if (win != null && win.IsActive())
+ {
+ // 浣跨敤鍙嶅皠鑾峰彇 battleField 瀛楁
+ var battleFieldField = win.GetType().GetField("battleField",
+ System.Reflection.BindingFlags.NonPublic |
+ System.Reflection.BindingFlags.Instance);
+
+ if (battleFieldField != null)
+ {
+ var battleField = battleFieldField.GetValue(win) as BattleField;
+ if (battleField != null)
+ {
+ battleField.IsPause = !battleField.IsPause;
+ isBattlePaused = battleField.IsPause;
+ Debug.Log($"鎴樻枟鏆傚仠鐘舵�佸垏鎹�: {battleField.IsPause}");
+ return;
+ }
+ }
+ }
+ }
+
+ Debug.LogWarning("鏈壘鍒版縺娲荤殑鎴樻枟绐楀彛鎴� battleField 涓虹┖");
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0