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.entities.Entity;
import net.alcuria.umbracraft.engine.screens.SetInputEnabled;
import net.alcuria.umbracraft.util.FileUtils;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap;
/** A {@link ScriptCommand} to initiate a battle.
* @author Andrew Keturi */
public class BattleScriptCommand extends ScriptCommand {
@Tooltip("The background to use for the battle")
public String background = "";
@Tooltip("The id of the enemy party we want to fight")
public String id = "";
@Tooltip("A script to invoke mid-battle")
public String script;
/** For deserialization */
public BattleScriptCommand() {
}
@Override
public ScriptCommand copy() {
BattleScriptCommand command = new BattleScriptCommand();
command.id = id;
command.background = background;
command.script = script;
return command;
}
@Override
public Set<String> getFilter() {
return null;
}
@Override
public String getName() {
return "Battle: " + id + ", " + background;
}
@Override
public ObjectMap<String, Array<String>> getSuggestions() {
return new ObjectMap<String, Array<String>>() {
{
put("id", Editor.db().enemyGroups().keys());
put("script", Editor.db().scripts().keys());
put("background", FileUtils.getFilesAt(Editor.db().config().projectPath + Editor.db().config().battleBgPath));
}
};
}
@Override
public void onCompleted() {
final Entity player = Game.entities().find(Entity.PLAYER);
if (player != null) {
player.velocity.x = 0;
player.velocity.y = 0;
}
Game.publisher().publish(new SetInputEnabled(true));
}
@Override
public void onStarted(Entity entity) {
Game.publisher().publish(new SetInputEnabled(false));
Game.battle().start(this);
}
@Override
public void update() {
complete();
}
}