package net.alcuria.umbracraft.engine.scripts; import java.util.Set; import net.alcuria.umbracraft.Game; import net.alcuria.umbracraft.definitions.FlagDefinition; import net.alcuria.umbracraft.definitions.ListDefinition; import net.alcuria.umbracraft.editor.Editor; import net.alcuria.umbracraft.engine.components.FlagChangedEvent; import net.alcuria.umbracraft.engine.components.ScriptComponent; import net.alcuria.umbracraft.engine.entities.Entity; import net.alcuria.umbracraft.util.StringUtils; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; /** Changes the value of a flag. * @author Andrew Keturi */ public class FlagScriptCommand extends ScriptCommand { public boolean enable; public String id; @Override public ScriptCommand copy() { FlagScriptCommand cmd = new FlagScriptCommand(); cmd.enable = enable; cmd.id = id; return cmd; } @Override public Set<String> getFilter() { return null; } @Override public String getName() { return String.format("Flag: %s, %b", id, enable); } @Override public ObjectMap<String, Array<String>> getSuggestions() { return new ObjectMap<String, Array<String>>() { { put("id", new Array<String>() { { final ListDefinition<FlagDefinition> flags = Editor.db().flags(); for (String key : flags.keys()) { add(flags.get(key).getName()); } } }); } }; } @Override public void onCompleted() { } @Override public void onStarted(Entity entity) { String convertedId = new String(id); if (StringUtils.isNotEmpty(convertedId)) { for (String local : ScriptComponent.LOCAL_FLAGS) { if (convertedId.equals(local)) { convertedId = convertedId + entity.getId(); } } Game.flags().set(convertedId, enable); Game.publisher().publish(new FlagChangedEvent(convertedId, entity)); } } @Override public void update() { complete(); } }