Files
aibis-dream/Assets/Scripts/FixSystemNew/WhackMole/CheckGameHandler.cs
T
2025-08-11 19:34:53 +08:00

110 lines
3.0 KiB
C#

using UnityEngine;
namespace AibisDream.FixSystem
{
public class CheckGameHandler : MonoBehaviour
{
[SerializeField] private Transform questionPart;
[SerializeField] private SpriteRenderer resultPart;
private CheckRule _curRule;
private PipelineProduct _curProduct;
public void LoadRules(CheckRule checkRule)
{
_curRule = checkRule;
// 展示规则
}
public void Handle(PipelineProduct product)
{
// 展示该物体
resultPart.sprite = product.CheckData.sprite;
_curProduct = product;
}
public void OnCheck(bool isPass)
{
var matchRes = _curRule.Match(_curProduct.CheckData);
Debug.Log(matchRes == isPass ? "判断正确" : "判断错误");
_curProduct.CheckPass();
}
}
[CreateAssetMenu(fileName = "CheckData", menuName = "Level Data/CheckData")]
public class CheckData : ScriptableObject
{
// 目前想到的就是色彩,边数,圆角和直角
public Color color;
public int borderCount;
public bool isRound;
public Sprite sprite;
}
[CreateAssetMenu(fileName = "CheckRule", menuName = "Level Data/CheckRule")]
public class CheckRule : ScriptableObject
{
public bool isColorLimited;
public Color color;
public CompareSign borderCountSign;
public int borderCount;
public CompareSign roundSign;
public bool isRound;
public bool Match(CheckData data)
{
// 色彩
if (isColorLimited == true)
{
if (color != data.color)
{
return false;
}
}
// 圆角和直角
if (roundSign == CompareSign.Equal)
{
if (isRound != data.isRound)
{
return false;
}
}
else if (roundSign == CompareSign.NotEqual)
{
if (isRound == data.isRound)
{
return false;
}
}
// 边数
return borderCountSign switch
{
CompareSign.Ignore => true,
CompareSign.Equal => borderCount == data.borderCount,
CompareSign.NotEqual => borderCount != data.borderCount,
CompareSign.GreaterThan => data.borderCount > borderCount,
CompareSign.LessThan => data.borderCount < borderCount,
CompareSign.GreaterThanOrEqual => data.borderCount >= borderCount,
CompareSign.LessThanOrEqual => data.borderCount <= borderCount,
_ => true,
};
}
}
public enum CompareSign
{
Ignore,
Equal,
NotEqual,
GreaterThan,
LessThan,
GreaterThanOrEqual,
LessThanOrEqual
}
}