package fi.hbp.angr; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import fi.hbp.angr.logic.GameState; import fi.hbp.angr.models.levels.Level; import fi.hbp.angr.screens.GameScreen; import fi.hbp.angr.screens.MainMenuScreen; import fi.hbp.angr.screens.PauseScreen; import fi.hbp.angr.screens.SummaryScreen; public class GdxGame extends Game { /** * Main menu. */ private MainMenuScreen mainMenu; /** * Actual game is on this screen. */ private GameScreen gameScreen; /** * Game summary/score is shown on this screen. */ private SummaryScreen gameEnd; /** * Pause screen. */ private PauseScreen pauseScreen; @Override public void create() { if (G.scoreboard == null) { Gdx.app.exit(); } mainMenu = new MainMenuScreen(this); gameScreen = new GameScreen(this); gameEnd = new SummaryScreen(this); pauseScreen = new PauseScreen(this); setScreen(mainMenu); } /** * Show main menu. */ public void showMainMenu() { setScreen(mainMenu); } /** * Load a next level. * @param level level that should be loaded. */ public void nextLevel(Level level) { gameScreen.loadLevel(level); } /** * Show pause screen. * @param currentScreen currently showing screen for getting back. */ public void showPauseScreen(Screen currentScreen) { pauseScreen.setLastScreen(currentScreen); setScreen(pauseScreen); } /** * This is called at the end of game. * Screen will be changed to summary screen. * @param gs game state object. */ public void endOfGame(GameState gs) { gameEnd.calcFinalScore(gs); setScreen(gameEnd); } @Override public void pause() { } @Override public void resume() { } }