package net.alcuria.umbracraft.engine.scripts; import java.util.Set; import net.alcuria.umbracraft.Game; import net.alcuria.umbracraft.annotations.Tooltip; import net.alcuria.umbracraft.editor.Editor; import net.alcuria.umbracraft.engine.components.AnimationCollectionComponent; import net.alcuria.umbracraft.engine.components.AnimationCollectionComponent.Pose; import net.alcuria.umbracraft.engine.entities.Entity; import net.alcuria.umbracraft.util.O; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; public class ChangePoseScriptCommand extends ScriptCommand { @Tooltip("The new AnimationGroup we want") public Pose pose = Pose.IDLE; @Tooltip("The target we want to change") public String target = ""; @Override public ScriptCommand copy() { ChangePoseScriptCommand cmd = new ChangePoseScriptCommand(); cmd.target = target; cmd.pose = pose; return cmd; } @Override public Set<String> getFilter() { return null; } @Override public String getName() { return "Change Pose: " + target + ", " + pose; } @Override public ObjectMap<String, Array<String>> getSuggestions() { return new ObjectMap<String, Array<String>>() { { put("target", Editor.db().entities().keys()); } }; } @Override public void onCompleted() { } @Override public void onStarted(Entity entity) { final Entity targetEntity = O.notNull(Game.entities().find(target)); AnimationCollectionComponent collection = targetEntity.getComponent(AnimationCollectionComponent.class); if (collection != null) { collection.setPose(pose); } else { Game.error("Entity needs an AnimationCollectionComponent"); } complete(); } @Override public void update() { } }