forked from Mirrors/openclonk
Add arithmetic user action evaluators (+-*/%)
parent
d8b488aa98
commit
bf35f92228
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue