diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank/game')
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Command.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Command.java b/core/src/ch/asynk/tankontank/game/Command.java new file mode 100644 index 0000000..903c18b --- /dev/null +++ b/core/src/ch/asynk/tankontank/game/Command.java @@ -0,0 +1,88 @@ +package ch.asynk.tankontank.game; + +import com.badlogic.gdx.utils.Pool; +import com.badlogic.gdx.utils.Json; +import com.badlogic.gdx.utils.JsonValue; + +import ch.asynk.tankontank.engine.Order; +import ch.asynk.tankontank.engine.Move; + +public class Command extends Order +{ + public enum CommandType + { + NONE, + MOVE, + ENGAGE, + PROMOTE, + END_OF_TURN; + } + + private static final Pool<Command> orderPool = new Pool<Command>() + { + @Override + protected Command newObject() { + return new Command(); + } + }; + + public static Command get(Player player) + { + Command c = orderPool.obtain(); + c.player = player; + return c; + } + + public CommandType type; + public Player player; + public Unit unit; + public Move move; + + private Command() + { + reset(); + } + + @Override + public void dispose() + { + orderPool.free(this); + } + + @Override + public void reset() + { + this.type = CommandType.NONE; + this.player = null; + this.unit = null; + if (this.move != null) { + this.move.dispose(); + this.move = null; + } + } + + @Override + public String toString() + { + return String.format("%s %s : ", type, unit.id); + } + + public void setMove(Unit unit, Move move) + { + this.type = CommandType.MOVE; + this.unit = unit; + this.move = move; + } + + @Override + public void write(Json json) + { + // FIXME Command.write(Json); + } + + @Override + public void read(Json json, JsonValue jsonMap) + { + // FIXME Command.read(Json, JsonValue); + } +} |