Add user action evaluator: Random integer

qteditor
Sven Eberhardt 2016-07-30 11:03:26 -04:00
parent 8840105f6c
commit 7eee5c4832
3 changed files with 28 additions and 0 deletions

View File

@ -100,6 +100,10 @@ func Definition(def)
AddEvaluator("Boolean", nil, "$Constant$", "$ConstantHelp$", "bool_constant", [def, def.EvalConstant], { Value=true }, { Type="bool", Name="$Value$" });
// Integer evaluators
AddEvaluator("Integer", nil, "$Constant$", "$ConstantHelp$", "int_constant", [def, def.EvalConstant], { Value=0 }, { Type="int", Name="$Value$" });
AddEvaluator("Integer", nil, "$Random$", "$RandomIntHelp$", "int_random", [def, def.EvalRandomInt], { Min={Function="int_constant", Value=0}, Max={Function="int_constant", Value=99} }, { Type="proplist", Display="{{Min}}-{{Max}}", EditorProps = {
Min = new Evaluator.Integer { Name="$Min$", EditorHelp="$RandomMinHelp$" },
Max = new Evaluator.Integer { Name="$Max$", EditorHelp="$RandomMaxHelp$" }
} } );
// Position evaluators
AddEvaluator("Position", nil, "$ConstantPositionAbsolute$", "$ConstantPositionAbsoluteHelp$", "position_constant", [def, def.EvalConstant], def.GetDefaultPosition, { Type="point", Name="$Position$", Relative=false, Color=0xff2000 });
AddEvaluator("Position", nil, "$ConstantPositionRelative$", "$ConstantPositionRelativeHelp$", "position_constant_rel", [def, def.EvalPositionRelative], { Value=[0,0] }, { Type="point", Name="$Position$", Relative=true, Color=0xff0050 });
@ -195,6 +199,9 @@ public func EvaluateValue(string eval_type, proplist props, proplist context)
}
// Not on hold: Perform evaluation
var cb = EvaluatorCallbacks[props.Function];
/*var rval = cb[0]->Call(cb[1], props, context, cb[2]);
Log("%v <- EvaluateValue %v %v %v", rval, eval_type, props, context);
return rval;*/
return cb[0]->Call(cb[1], props, context, cb[2]);
}
@ -448,6 +455,15 @@ private func GetDefaultCoordinates(object target_object)
return value;
}
private func EvalRandomInt(proplist props, proplist context)
{
// Random value between min and max. Also allow them to be swapped.
var min = EvaluateValue("Integer", props.Min, context);
var max = EvaluateValue("Integer", props.Max, context);
var rmin = Min(min,max);
return Random(Max(max,min)-rmin) + rmin;
}
private func EvalPositionRelative(proplist props, proplist context)
{
// Return position relative to action_object

View File

@ -109,3 +109,9 @@ OffYHelp=Vertikale Verschiebung.
AddOffsets=Verschiebungen addieren
AddOffsetsHelp=Addiert zwei Teilverschiebungen zu einer ganzen Verschiebung
AddOffsetOffsetHelp=Teilverschiebung
Random=Zufallszahl
RandomIntHelp=Zufaelliger Wert zwischen einem Minimum und einem Maximum.
Min=Minimum
RandomMinHelp=Kleinstmoegliche Zahl
Max=Maximum
RandomMaxHelp=Groesstmoegliche Zahl

View File

@ -109,3 +109,9 @@ OffYHelp=Vertical offset.
AddOffsets=Add offsets
AddOffsetsHelp=Adds two partial offsets to one big offset.
AddOffsetOffsetHelp=Partial offset.
Random=Random number
RandomIntHelp=Random value between a minimum and a maximum
Min=Minimum
RandomMinHelp=Smallest possible number
Max=Maximum
RandomMaxHelp=Largest possible number