84 lines
2.8 KiB
C#
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();
|
|
}
|
|
}
|
|
} |