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); } } } }