diff --git a/Assets/Cryville/Crtr/PdtEvaluator.cs b/Assets/Cryville/Crtr/PdtEvaluator.cs index 6b54dc7..cacc0ad 100644 --- a/Assets/Cryville/Crtr/PdtEvaluator.cs +++ b/Assets/Cryville/Crtr/PdtEvaluator.cs @@ -95,6 +95,14 @@ namespace Cryville.Crtr { else throw new KeyNotFoundException(string.Format("Undefined operator {0}({1})", name, pc)); } + protected override bool Collapse(string name, PdtVariableMemory param) { + switch (name) { + case "&": return param.AsNumber() == 0; + case "|": return param.AsNumber() != 0; + default: throw new KeyNotFoundException(string.Format("Undefined collapse operator {0}", name)); + } + } + public ChartEvent ContextEvent { private get; set; } public Transform ContextTransform { private get; set; } public Judge ContextJudge { private get; set; } @@ -120,13 +128,11 @@ namespace Cryville.Crtr { } static PdtEvaluator() { _shortops.Add(new OperatorSignature("*", 2), new op_mul_2()); - _shortops.Add(new OperatorSignature("&", 2), new op_mul_2()); _shortops.Add(new OperatorSignature("/", 2), new op_div_2()); _shortops.Add(new OperatorSignature("%", 2), new op_mod_2()); _shortops.Add(new OperatorSignature("+", 1), new op_add_1()); _shortops.Add(new OperatorSignature("+", 2), new op_add_2()); - _shortops.Add(new OperatorSignature("|", 2), new op_add_2()); _shortops.Add(new OperatorSignature("-", 1), new op_sub_1()); _shortops.Add(new OperatorSignature("-", 2), new op_sub_2());