/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package colisoes;
import javaPlay.GameEngine;

/**
 *
 * @author Gefersom
 */

/* O método GameEngine.getInstance().addGameStateController.( NumeroDeChamada, Aluno )
 * Assim como todo aluno tem seu próprio número de chamada todos os Estados D eControle Do Jogo
 * possuem seu próprio número que o identifica no jogo e que está definido na classe
 * NumerosControle.
 *
 * Devemos setar Estados de Controle do Jogo antes de começarmos a rodar o jogo
 * Definir qual classe será chamada primeiramente
 * Classes podem passar o controle do jogo para outras classes, assim como a classe TelaInicial
 * passa o controle do jogo para a classe Jogar e está pode passar o controle
 * para as classes Perdeu( caso o jogador tenha perdido o jogo ) ou para a classe
 * Ganhou ( caso o jogador tenha ganhado o jogo )
 */

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        //Adiciona as classes que irão iteragir durante o Jogo GameEngine.getInstance().addGameStateController( );
        //A classe NumerosControle corresponde ao número de chamada do método, por exemplo:
        //Temos uma classe chamada Batata, ao associarmos a ela o número 523, quando quisermos chamar essa classe
        //em alguma parte do nosso jogo poderíamos fazer isso simplesmente usando o número associado a ela.
        //Adiciona as classes que irão iteragir durante o Jogo

        // TelaInicial - Primeira tela que aparecerá quando executarmos o jogo
        GameEngine.getInstance().addGameStateController( NumerosControle.TELA_INICIAL, new TelaInicial() );

        //Jogar - Classe responsável pela iteratividade do jogo
        GameEngine.getInstance().addGameStateController( NumerosControle.JOGAR, new Jogar() );

        // Ganhou - Classe que apresentará na tela uma mensagem de quando o jogador completar com êxito as fases
        GameEngine.getInstance().addGameStateController( NumerosControle.GANHOU, new Ganhou() );

        // Perdeu - Classe que apresentará na tela uma mensagem de Perdeu quando o jogador não concluir as fases
        GameEngine.getInstance().addGameStateController( NumerosControle.PERDEU, new Perdeu() );

        //Informa qual a classe que PRIMEIRAMENTE será chamada quando o jogo começar a rodar
        GameEngine.getInstance().setStartingGameStateController( NumerosControle.TELA_INICIAL );

        //Começa a rodar o jogo
        GameEngine.getInstance().run();
    }

}
