package jogogalo.textui.main;
import pt.utl.ist.po.ui.Menu;
import pt.utl.ist.po.ui.Command;
import pt.utl.ist.po.ui.Display;
import pt.utl.ist.po.ui.Form;
import pt.utl.ist.po.ui.InputInteger;
import jogogalo.textui.player.HumanPlayer;
import jogogalo.core.AplicacaoJogoGalo;
import jogogalo.core.JogoGalo;
import jogogalo.core.PecaJogador1;
import jogogalo.core.PecaJogador2;
import jogogalo.core.ResultadoJogo;
/**
* Command for starting a new game. Creates a new game and shows a menu with two options: "Play as Player 1" and
* "Play as Player 2". When the user quits this menu, if the game is finished then the game is added to the finished games
* of this application.
*/
public class PlayGame extends Command<AplicacaoJogoGalo> {
/**
* Constructor.
*
* @param app the target entity.
*/
public PlayGame(AplicacaoJogoGalo app) {
super("Novo Jogo", app);
}
/**
* Execute the command.
*/
@Override
@SuppressWarnings("nls")
public final void execute() {
Form f = new Form();
InputInteger inI = new InputInteger(f, "Indique dimensão do jogo: ");
f.parse();
JogoGalo jogo = new JogoGalo(inI.value());
Command<?>[] commands = {
new HumanPlayer(jogo, true),
new HumanPlayer(jogo, false),
};
Menu jogoMenu = new Menu("Jogar", commands);
jogoMenu.entry(1).invisible();
jogoMenu.open();
if (jogo.obtemResultado() != ResultadoJogo.NAO_FINALIZADO) {
entity().guarda(jogo);
}
}
}