Files
aibis-dream/Assets/Scripts/FixSystemNew/WhackMole/CheckGameHandler.cs
T
2025-08-13 14:54:13 +08:00

81 lines
2.1 KiB
C#

using TMPro;
using UnityEngine;
namespace AibisDream.FixSystem
{
public class CheckGameHandler : MonoBehaviour
{
[SerializeField] private TMP_Text ruleText;
[SerializeField] private SpriteRenderer resultPart;
[SerializeField] private SpriteButton rightBtn;
[SerializeField] private SpriteButton errorBtn;
private CheckRule _curRule;
private PipelineProduct _curProduct;
private void Awake()
{
rightBtn.OnClicked += () => OnCheck(true);
errorBtn.OnClicked += () => OnCheck(false);
}
public void LoadRules(CheckRule checkRule)
{
_curRule = checkRule;
// 展示规则
ruleText.text = _curRule.GetRuleText();
}
public void Handle(PipelineProduct product)
{
// 展示该物体
resultPart.sprite = product.CheckData.sprite;
resultPart.color = GetColorFromString(product.CheckData.colorName);
_curProduct = product;
}
public Color GetColorFromString(string colorName)
{
try
{
return (Color)typeof(Color).GetProperty(colorName.ToLowerInvariant())?.GetValue(null, null)!;
}
catch
{
Debug.LogError("Invalid color name");
return Color.black; // 默认返回黑色
}
}
public void Clear()
{
_curProduct = null;
resultPart.sprite = null;
}
private void OnCheck(bool isPass)
{
if (_curProduct == null || _curRule == null)
{
return;
}
var matchRes = _curRule.Match(_curProduct.CheckData);
Debug.Log(matchRes == isPass ? "判断正确" : "判断错误");
_curProduct.CheckPass(matchRes == isPass);
}
}
public enum CompareSign
{
Ignore,
Equal,
NotEqual,
GreaterThan,
LessThan,
GreaterThanOrEqual,
LessThanOrEqual
}
}