Files
aibis-dream/Assets/Scripts/MiniGame/BlockPuzzle/Class/ValidateResultLog.cs
T
2025-12-09 16:13:32 +08:00

84 lines
2.8 KiB
C#

using System.Text;
using JetBrains.Annotations;
using UnityEngine;
namespace AibisDream
{
public class ValidateResultLog : MonoBehaviour
{
[SerializeField] private int fontSize;
private ValidateResult validateResult;
private Rect windowRect = new Rect(10, 10, 500, 200);
private string validateResultString = "没有校验结果";
private int totalLine = 1;
private void Awake()
{
GetComponent<BlockPuzzle>().OnSubmit += ShowValidateResult;
GetComponent<BlockPuzzle>().OnPreview += ShowValidateResult;
}
private void OnDestroy()
{
GetComponent<BlockPuzzle>().OnSubmit -= ShowValidateResult;
GetComponent<BlockPuzzle>().OnPreview -= ShowValidateResult;
}
private void OnGUI()
{
GUIStyle debugStyle = GUI.skin.GetStyle("window");
windowRect = GUI.Window(GetInstanceID(), windowRect, DrawDebugOverlay, "校验结果", debugStyle);
}
private void DrawDebugOverlay(int windowID)
{
// 生成校验结果字符串
var width = fontSize * 20 + 5;
var height = fontSize * totalLine + 5;
GUIStyle style = GUI.skin.GetStyle("label");
style.fontSize = fontSize;
GUI.Label(new Rect(30, 20, width, height), validateResultString, style);
GUI.DragWindow();
}
private void GenerateValidateResultString()
{
var stringBuilder = new StringBuilder();
int lineCount = 0;
// 先看最终结果
stringBuilder.AppendLine($"基本条件是否完成: {validateResult.isPass}");
lineCount++;
foreach (var (conditonName, isPass) in validateResult.baseConditionResults)
{
stringBuilder.AppendLine($"{conditonName}条件结果: {isPass}");
lineCount++;
}
// 再看额外检验
stringBuilder.AppendLine($"额外条件是否完成: {validateResult.isExtraConditionPass}");
lineCount++;
foreach (var (conditonName, isPass) in validateResult.extraConditionResults)
{
stringBuilder.AppendLine($"{conditonName}条件结果: {isPass}");
lineCount++;
}
totalLine = lineCount;
validateResultString = stringBuilder.ToString();
}
private void ShowValidateResult([CanBeNull]ValidateResult result)
{
if (result == null)
{
validateResultString = "没有校验结果";
totalLine = 1;
return;
}
validateResult = result;
GenerateValidateResultString();
}
}
}