package uk.co.flyingsquirrels.gamestates;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
import uk.co.flyingsquirrels.AdAstra;
import uk.co.flyingsquirrels.menuoptions.EnterStateMenuOption;
import uk.co.flyingsquirrels.menuoptions.MenuOption;
import uk.co.flyingsquirrels.models.Vehicle;
public class ChooseVehicleGameState extends MenuGameState {
public static final int ID = 4;
public ChooseVehicleGameState() {
super(ID, "Choose Vehicle");
}
public void initInternal(GameContainer container, StateBasedGame game)
throws SlickException {
for (Class<? extends Vehicle> vehicleClass : AdAstra.getVehicleClasses()) {
addMenuOption(new ChooseVehicleOption(container, game, vehicleClass));
}
addMenuOption(new EnterStateMenuOption(game, "Back to main menu", MainMenuGameState.ID));
}
class ChooseVehicleOption implements MenuOption {
private final StateBasedGame game;
private final Class<? extends Vehicle> vehicleClass;
private final GameContainer container;
ChooseVehicleOption(GameContainer container, StateBasedGame game, Class<? extends Vehicle> vehicleClass) {
this.container = container;
this.game = game;
this.vehicleClass = vehicleClass;
}
@Override
public String getText() {
return vehicleClass.getSimpleName();
}
@Override
public void select() {
AdAstra.setSelectedVehicleClass(vehicleClass);
try {
game.getState(PlayingGameState.ID).init(container, game);
game.enterState(PlayingGameState.ID);
} catch (SlickException e) {
throw new RuntimeException(e);
}
}
}
}