81 lines
2.1 KiB
C#
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
|
|
}
|
|
} |