Add sequence user action to trigger other sequences

ipv6
Sven Eberhardt 2016-12-27 08:57:36 -04:00
parent 93109e60f5
commit eee156b5ac
3 changed files with 19 additions and 0 deletions

View File

@ -379,6 +379,10 @@ public func Definition(def)
Target = UserAction->GetObjectEvaluator("IsSequence", "$Name$"),
Status = new UserAction.Evaluator.Boolean { Name="$Status$", EditorHelp="$SetActiveStatusHelp$" }
} } );
UserAction->AddEvaluator("Action", "$Name$", "$ActTrigger$", "$ActTriggerDesc$", "sequence_trigger", [def, def.EvalAct_Trigger], { Target = { Function="action_object" }, TriggeringObject = { Function="triggering_object" } }, { Type="proplist", Display="{{Target}}({{TriggeringObject}})", EditorProps = {
Target = new UserAction->GetObjectEvaluator("IsSequence", "$Name$") { Priority=60 },
TriggeringObject = new UserAction.Evaluator.Object { Name="$TriggeringObject$", EditorHelp="$TriggeringObjectHelp$" }
} } );
UserAction->AddEvaluator("Action", "$Name$", "$DisablePlayerControls$", "$DisablePlayerControlsHelp$", "sequence_disable_player_controls", [def, def.EvalAct_DisablePlayerControls], { Players = { Function="all_players" }, MakeInvincible = { Function="bool_constant", Value=true } }, { Type="proplist", Display="{{Players}}", EditorProps = {
Players = new UserAction.Evaluator.PlayerList { Name="$Players$", EditorHelp="$PlayerControlsPlayersHelp$" },
MakeInvincible = new UserAction.Evaluator.Boolean { Name="$MakeInvincible$", EditorHelp="$MakeInvincibleHelp$" }
@ -734,6 +738,13 @@ private func EvalAct_SetActive(proplist props, proplist context)
target->~SetActive(status);
}
private func EvalAct_Trigger(proplist props, proplist context)
{
var target = UserAction->EvaluateValue("Object", props.Target, context);
var triggering_object = UserAction->EvaluateValue("Object", props.TriggeringObject, context);
if (target && target->~IsSequence()) target->OnTrigger(triggering_object, nil, false);
}
private func EvalAct_DisablePlayerControls(proplist props, proplist context)
{
var players = UserAction->EvaluateValue("PlayerList", props.Players, context) ?? [];

View File

@ -60,3 +60,7 @@ MakeInvincible=Unverwundbar
MakeInvincibleHelp=Ob alle Clonks waehrend des Deaktivierens unverwundbar sind.
EnablePlayerControls=Spielerkontrolle aktivieren
EnablePlayerControlsHelp=Reaktiviert die Steuerung fuer alle Clonks eines oder mehrerer Spieler.
ActTrigger=Sequenz ausloesen
ActTriggerDesc=Startet eine Sequenz, als waere der Ausloeser aktiviert worden. Die Bedigung wird vorher gegebenenfalls ueberprueft.
TriggeringObject=Ausloeseobjekt
TriggeringObjectHelp=Das Objekt, das innerhalb der Sequenz als ausloesendes Objekt zurueckgegeben wird.

View File

@ -60,3 +60,7 @@ MakeInvincible=Invincible
MakeInvincibleHelp=Whether all clonks are made invincible while control is deactivated.
EnablePlayerControls=Enable player control
EnablePlayerControlsHelp=Reactivates control of all clonks for one or more plauers.
ActTrigger=Trigger sequence
ActTriggerDesc=Starts a sequence as if the trigger had been activated. Checks the condition before.
TriggeringObject=Triggering object
TriggeringObjectHelp=The object returned as trigger object within the sequence.