forked from Mirrors/openclonk
Add user action evaluator: If
parent
5babeba4d8
commit
17409ab4c1
|
@ -135,6 +135,11 @@ func Definition(def)
|
|||
{ Name="$EjectContentsYes$", Value=true }
|
||||
] },
|
||||
} } );
|
||||
AddEvaluator("Action", "$Script$", "$ConditionalAction$", "$ConditionalActionHelp$", "if", [def, def.EvalAct_If, "Action"], { }, { Type="proplist", Display="if({{Condition}}) {{Action}} else {{ElseAction}}", EditorProps = {
|
||||
Condition = new Evaluator.Boolean { Name="$Condition$", EditorHelp="$IfConditionHelp$" },
|
||||
TrueEvaluator = new Evaluator.Action { Name="$TrueEvaluator$", EditorHelp="$TrueEvaluatorHelp$" },
|
||||
FalseEvaluator = new Evaluator.Action { Name="$FalseEvaluator$", EditorHelp="$FalseEvaluatorHelp$" }
|
||||
} } );
|
||||
AddEvaluator("Action", "$Script$", "$SetVariable$", "$SetVariableHelp$", "set_variable", [def, def.EvalAct_SetVariable], { }, { Type="proplist", Display="{{Context}}::{{VariableName}}={{Value}}", EditorProps = {
|
||||
Context = new Evaluator.Object { Name="$Context$", EditorHelp="$VariableContextHelp$", EmptyName="$Global$" },
|
||||
VariableName = new Evaluator.String { Name="$VariableName$", EditorHelp="$VariableNameHelp$" },
|
||||
|
@ -781,6 +786,17 @@ private func EvalAct_RemoveObject(proplist props, proplist context)
|
|||
obj->RemoveObject(props.EjectContents);
|
||||
}
|
||||
|
||||
private func EvalAct_If(proplist props, proplist context, eval_type)
|
||||
{
|
||||
// Do evaluation on first pass. After that, take context value.
|
||||
var sid = props._sequence_id;
|
||||
if (!sid) sid = props._sequence_id = Format("%d", ++UserAction_SequenceIDs);
|
||||
if (context.sequence_progress[sid] = context.sequence_progress[sid] ?? !!EvaluateValue("Boolean", props.Condition, context))
|
||||
return EvaluateValue(eval_type, props.TrueEvaluator, context);
|
||||
else
|
||||
return EvaluateValue(eval_type, props.FalseEvaluator, context);
|
||||
}
|
||||
|
||||
private func EvalAct_Log(proplist props, proplist context)
|
||||
{
|
||||
Log(EvaluateValue("String", props.Message, context) ?? "");
|
||||
|
|
|
@ -273,3 +273,11 @@ PositionX=X-Position
|
|||
PositionXHelp=Horizontale Komponente einer Position.
|
||||
PositionY=Y-Position
|
||||
PositionYHelp=Vertikale Komponente einer Position.
|
||||
ConditionalAction=Bedingte Aktion
|
||||
ConditionalActionHelp=Fuehrt eine Aktion nur dann aus, wenn eine Bedingung wahr ist.
|
||||
Condition=Bedingung
|
||||
IfConditionHelp=Bedingung, die entscheidet, ob die bedingte Aktion oder die alternative Aktion ausgefuehrt wird.
|
||||
TrueEvaluator=Bedingte Aktion
|
||||
TrueEvaluatorHelp=Aktion, die nur dann ausgefuehrt wird, wenn die Begingung wahr ist.
|
||||
FalseEvaluator=Alternative Aktion
|
||||
FalseEvaluatorHelp=Aktion, die nur dann ausgefuehrt wird, wenn die Bedingung nicht wahr ist.
|
||||
|
|
|
@ -273,3 +273,11 @@ PositionX=X position
|
|||
PositionXHelp=Horizontal component of a position.
|
||||
PositionY=Y position
|
||||
PositionYHelp=Vertical component of a position.
|
||||
ConditionalAction=Conditional action
|
||||
ConditionalActionHelp=Executes an action only if a condition is true.
|
||||
Condition=Condition
|
||||
IfConditionHelp=Condition which decides whether the conditional action of the alternative action is executed.
|
||||
TrueEvaluator=Conditioned action
|
||||
TrueEvaluatorHelp=Action that is executed if the condition is true.
|
||||
FalseEvaluator=Else action
|
||||
FalseEvaluatorHelp=Action that is executed if the condition is false.
|
||||
|
|
Loading…
Reference in New Issue