Add arithmetic user action evaluators (+-*/%)

qteditor
Sven Eberhardt 2016-07-31 21:31:53 -04:00
parent d8b488aa98
commit bf35f92228
3 changed files with 51 additions and 0 deletions

View File

@ -243,6 +243,15 @@ func Definition(def)
AddEvaluator("Boolean", nil, "$ObjectExists$", "$ObjectExistsHelp$", "object_exists", [def, def.EvalBool_ObjectExists], { }, new Evaluator.Object { }, "Object");
// Integer evaluators
AddEvaluator("Integer", nil, ["$Constant$", ""], "$ConstantHelp$", "int_constant", [def, def.EvalConstant], { Value=0 }, { Type="int", Name="$Value$" });
var arithmetic_delegate = { Type="proplist", EditorProps = {
LeftOperand = new Evaluator.Integer { Name="$LeftOperand$", EditorHelp="$LeftArithmeticOperandHelp$" },
RightOperand = new Evaluator.Integer { Name="$RightOperand$", EditorHelp="$RightArithmeticOperandHelp$" }
} };
AddEvaluator("Integer", "$Arithmetic$", "$Sum$ (+)", "$SumHelp$", "add", [def, def.EvalInt_Add], { }, new arithmetic_delegate { Display="{{LeftOperand}}+{{RightOperand}}" });
AddEvaluator("Integer", "$Arithmetic$", "$Sub$ (-)", "$SumHelp$", "subtract", [def, def.EvalInt_Sub], { }, new arithmetic_delegate { Display="{{LeftOperand}}-{{RightOperand}}" });
AddEvaluator("Integer", "$Arithmetic$", "$Mul$ (*)", "$MulHelp$", "multiply", [def, def.EvalInt_Mul], { }, new arithmetic_delegate { Display="{{LeftOperand}}*{{RightOperand}}" });
AddEvaluator("Integer", "$Arithmetic$", "$Div$ (/)", "$DivHelp$", "divide", [def, def.EvalInt_Div], { }, new arithmetic_delegate { Display="{{LeftOperand}}/{{RightOperand}}" });
AddEvaluator("Integer", "$Arithmetic$", "$Mod$ (%)", "$ModHelp$", "modulo", [def, def.EvalInt_Mod], { }, new arithmetic_delegate { Display="{{LeftOperand}}%{{RightOperand}}" });
AddEvaluator("Integer", nil, "$Random$", "$RandomIntHelp$", "int_random", [def, def.EvalIntRandom], { Min={Function="int_constant", Value=0}, Max={Function="int_constant", Value=99} }, { Type="proplist", Display="Rnd({{Min}}..{{Max}})", EditorProps = {
Min = new Evaluator.Integer { Name="$Min$", EditorHelp="$RandomMinHelp$" },
Max = new Evaluator.Integer { Name="$Max$", EditorHelp="$RandomMaxHelp$" }
@ -981,6 +990,22 @@ private func EvalOffsetDiff(proplist props, proplist context)
return [pB[0]-pA[0], pB[1]-pA[1]];
}
private func EvalInt_Add(proplist props, proplist context) { return EvaluateValue("Integer", props.LeftOperand, context) + EvaluateValue("Integer", props.RightOperand, context); }
private func EvalInt_Sub(proplist props, proplist context) { return EvaluateValue("Integer", props.LeftOperand, context) - EvaluateValue("Integer", props.RightOperand, context); }
private func EvalInt_Mul(proplist props, proplist context) { return EvaluateValue("Integer", props.LeftOperand, context) * EvaluateValue("Integer", props.RightOperand, context); }
private func EvalInt_Div(proplist props, proplist context)
{
var a = EvaluateValue("Integer", props.LeftOperand, context), b = EvaluateValue("Integer", props.RightOperand, context);
return a/(b+!b);
}
private func EvalInt_Mod(proplist props, proplist context)
{
var a = EvaluateValue("Integer", props.LeftOperand, context), b = EvaluateValue("Integer", props.RightOperand, context);
return a%(b+!b);
}
private func EvalInt_Distance(proplist props, proplist context)
{
var pA = EvaluatePosition(props.PositionA, context);

View File

@ -243,3 +243,16 @@ NumberOfObjects=Anzahl Objekte
NumberOfObjectsHelp=Anzahl der Elemente in einer Objektliste. Die Objektliste wird als Funktion angegeben.
NumberOfPlayers=Anzahl Spieler
NumberOfPlayersHelp=Anzahl Spieler in einer Spielerliste. Die Spielerliste wird als Funktion angegeben.
LeftArithmeticOperandHelp=Wert links vom Rechenoperator.
RightArithmeticOperandHelp=Wert rechts vom Rechenoperator.
Arithmetic=Arithmetik
Sum=Summe
SumHelp=Addiert zwei Zahlen.
Sub=Differenz
SumHelp=Zieht den rechten Operanden vom linken Operanden ab.
Mul=Produkt
MulHelp=Multipliziert zwei Zahlen.
Div=Division
DivHelp=Teilt den linken Operanden durch den rechten Operanden. Das Ergebnis wird zur Null gerundet.
Mod=Modulo
ModHelp=Teilt den linken Operanden durch den rechten Operanden und gibt den Rest der Division zurueck.

View File

@ -243,3 +243,16 @@ NumberOfObjects=Number of objects
NumberOfObjectsHelp=Number of elements in an object list. The object list is given as a function.
NumberOfPlayers=Number of players
NumberOfPlayersHelp=Number of players in a player list. The player list is given as a function.
LeftArithmeticOperandHelp=Value left of the math operator.
RightArithmeticOperandHelp=Value right of the math operator.
Arithmetic=Arithmetic
Sum=Sum
SumHelp=Adds two numbers.
Sub=Difference
SumHelp=Subtracts the right operand from the left operand.
Mul=Product
MulHelp=Multiplies two numbers.
Div=Division
DivHelp=Divides the left operand by the right operand. The result is rounded towards zero.
Mod=Modulo
ModHelp=Returns the remainder of the division of the left operand by the right operand.