package de.dbaelz.secludedness.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import de.dbaelz.secludedness.MainGame; import de.dbaelz.secludedness.manager.AudioManager; import de.dbaelz.secludedness.manager.GPGSAchievement; import de.dbaelz.secludedness.manager.GPGSLeaderboard; import de.dbaelz.secludedness.manager.GPGSManager; import de.dbaelz.secludedness.manager.LevelManager; import de.dbaelz.secludedness.manager.AudioManager.MusicFile; public class MenuScreen extends AbstractScreen { private TextureAtlas mAtlas; private Skin mSkin; private Table mTable; public MenuScreen(MainGame game) { super(game); } @Override public void show() { super.show(); final GPGSManager playManager = mGame.getGPGSManager(); playManager.signIn(); final AudioManager audioManager = mGame.getAudioManager(); if (!audioManager.isMusicPlaying()){ audioManager.playMusic(MusicFile.THE_FINAL_END, true); } mAtlas = new TextureAtlas(Gdx.files.internal("ui/uiskin.atlas")); FileHandle skinFile = Gdx.files.internal( "ui/uiskin.json" ); mSkin = new Skin(skinFile); final int buttonWidth = 250; final int buttonHeight = 30; final TextButton playRandomLevel = new TextButton("PLAY RANDOM LEVEL", mSkin); playRandomLevel.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); audioManager.stopMusic(); mGame.setScreen(new LevelScreen(mGame, false, mGame.getLevelManager().getRandomLevel())); } }); final TextButton playCampaign = new TextButton("PLAY CAMPAIGN", mSkin); playCampaign.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); audioManager.stopMusic(); mGame.getGPGSManager().unlockAchievement(GPGSAchievement.BEGIN_CAMPAIGN.getAchievementID()); if (mGame.getLevelManager().isCampaignFinished()) { mGame.getLevelManager().restartCampaign(); } mGame.setScreen(new LevelScreen(mGame, true, mGame.getLevelManager().getCurrentCampaignLevelFilename())); } }); final TextButton showAchievements = new TextButton("SHOW ACHIEVEMENTS", mSkin); showAchievements.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); playManager.getAchievements(); } }); final TextButton showLeaderboard = new TextButton("SHOW LEADERBOARD", mSkin); showLeaderboard.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); mGame.getGPGSManager().getLeaderboard(GPGSLeaderboard.CAMPAIGN_SCORE.getLeaderboardID()); } }); final TextButton settingsMenu = new TextButton("SETTINGS", mSkin); settingsMenu.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); mGame.setScreen(new SettingsScreen(mGame)); } }); final TextButton endGame = new TextButton("END GAME", mSkin); endGame.addListener(new ClickListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); audioManager.stopMusic(); LevelManager levelManager = mGame.getLevelManager(); if (levelManager.isCampaignFinished()) { levelManager.restartCampaign(); } playManager.saveCampaignToCloud(levelManager.getCurrentCampaignLevel(), levelManager.getCampaignScore()); Gdx.app.exit(); } }); mTable = new Table(mSkin); mTable.setFillParent(true); mStage.addActor(mTable); mTable.add(playRandomLevel).size(buttonWidth, buttonHeight).uniform(); mTable.row(); mTable.add(playCampaign).size(buttonWidth, buttonHeight).uniform().spaceTop(10); mTable.row(); mTable.add(showAchievements).size(buttonWidth, buttonHeight).uniform().spaceTop(30); mTable.row(); mTable.add(showLeaderboard).size(buttonWidth, buttonHeight).uniform().spaceTop(10); mTable.row(); mTable.add(settingsMenu).size(buttonWidth, buttonHeight).uniform().spaceTop(30); mTable.row(); mTable.add(endGame).size(buttonWidth, buttonHeight).uniform().spaceTop(10); } @Override public void hide() { super.hide(); mAtlas.dispose(); mSkin.dispose(); } }