package net.alcuria.umbracraft.engine.scripts; import java.util.Set; import net.alcuria.umbracraft.Game; import net.alcuria.umbracraft.annotations.Order; import net.alcuria.umbracraft.annotations.Tooltip; import net.alcuria.umbracraft.editor.Editor; 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; public class ItemChangeScriptCommand extends ScriptCommand { @Order(2) @Tooltip("The amount to add/subtract. Negative values will remove.") public int amount = 0; @Order(1) @Tooltip("The item ID to change") public String id = ""; @Override public ScriptCommand copy() { ItemChangeScriptCommand item = new ItemChangeScriptCommand(); item.amount = amount; item.id = id; return item; } @Override public Set<String> getFilter() { return null; } @Override public String getName() { return "Change Inventory: " + id + ", " + (amount >= 0 ? "Add " : "Remove ") + Math.abs(amount); } @Override public ObjectMap<String, Array<String>> getSuggestions() { return new ObjectMap<String, Array<String>>() { { put("id", Editor.db().items().keys()); } }; } @Override public void onCompleted() { } @Override public void onStarted(Entity entity) { id = StringUtils.replaceArgs(id, entity.getArguments()); if (amount > 0) { Game.items().add(id, amount); } else if (amount < 0) { Game.items().remove(id, -amount); } complete(); } @Override public void update() { } }