From 3a49a9c21d659d5624c38238165ee9f7427cd9e2 Mon Sep 17 00:00:00 2001 From: Sven Eberhardt Date: Mon, 15 Aug 2016 01:19:14 -0400 Subject: [PATCH] Add user action: Set object position --- .../Objects.ocd/Helpers.ocd/UserAction.ocd/Script.c | 12 ++++++++++++ .../Helpers.ocd/UserAction.ocd/StringTblDE.txt | 4 ++++ .../Helpers.ocd/UserAction.ocd/StringTblUS.txt | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/Script.c b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/Script.c index d0b7f95be..d765454c7 100644 --- a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/Script.c +++ b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/Script.c @@ -135,6 +135,10 @@ func Definition(def) { Name="$EjectContentsYes$", Value=true } ] }, } } ); + AddEvaluator("Action", "$Object$", "$SetPosition$", "$SetPositionHelp$", "set_position", [def, def.EvalAct_SetPosition], { Object={ Function="triggering_clonk" }, Position={ Function="position_constant_rel" } }, { Type="proplist", Display="({{Object}}->{{Position}})", ShowFullName=true, EditorProps = { + Object = new Evaluator.Object { Name="$Object$", EditorHelp="$SetPositionObjectHelp$" }, + Position = new Evaluator.Position { Name="$Position$", EditorHelp="$SetPositionPositionHelp$" } + } } ); AddEvaluator("Action", "Clonk", "$DoEnergy$", "$DoEnergyHelp$", "do_energy", [def, def.EvalAct_ObjectCallInt, Global.DoEnergy], { Object={ Function="triggering_clonk" } }, { Type="proplist", Display="({{Object}}, {{Value}})", ShowFullName=true, EditorProps = { Object = new Evaluator.Object { Name="$Object$", EditorHelp="$DoEnergyObjectHelp$" }, Value = new Evaluator.Integer { Name="$ValueChange$", EditorHelp="$DoEnergyValueChangeHelp$" } @@ -793,6 +797,14 @@ private func EvalAct_RemoveObject(proplist props, proplist context) obj->RemoveObject(props.EjectContents); } +private func EvalAct_SetPosition(proplist props, proplist context) +{ + var obj = EvaluateValue("Object", props.Object, context); + if (!obj) return; + var pos = EvaluatePosition(props.Position, context); + obj->SetPosition(pos[0], pos[1]); +} + private func EvalAct_ObjectCallInt(proplist props, proplist context, func call_fn) { var obj = EvaluateValue("Object", props.Object, context); diff --git a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblDE.txt b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblDE.txt index 1414a882d..7fc789060 100644 --- a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblDE.txt +++ b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblDE.txt @@ -287,3 +287,7 @@ DoEnergyHelp=Erhoeht oder verringert die Energie eines Lebewesens. Faellt die En DoEnergyObjectHelp=Objekt, dessen Energie geaendert wird. ValueChange=Aenderung DoEnergyValueChangeHelp=Wert um dne die Energie geaendert wird. +SetPosition=Objekt verschieben +SetPositionHelp=Setzt ein Objekt an eine neue Position. +SetPositionObjectHelp=Zu verschiebendes Objekt. +SetPositionPositionHelp=Neue Position fuer die Objektmitte des verschobenen Objektes. diff --git a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblUS.txt b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblUS.txt index 4712f3558..d8802ad0b 100644 --- a/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblUS.txt +++ b/planet/Objects.ocd/Helpers.ocd/UserAction.ocd/StringTblUS.txt @@ -287,3 +287,7 @@ DoEnergyHelp=Increases or decreases the energy of a living object (e.g. a clonk) DoEnergyObjectHelp=Object for which energy is adjusted. ValueChange=Change DoEnergyValueChangeHelp=Value that is added to the current energy of the object. +SetPosition=Move object +SetPositionHelp=Puts an object to a new position. +SetPositionObjectHelp=Object to move. +SetPositionPositionHelp=New position for the object.