package com.digitalwolf.screenhelpers; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener; import com.digitalwolf.drona.assets.Assets; import com.digitalwolf.drona.screens.GameScreen; import com.digitalwolf.drona.screens.MainMenuScreen; import com.digitalwolf.drona.world.World; import com.digitalwolf.gamedata.Settings; import com.moribitotech.mtx.ButtonGame; import com.moribitotech.mtx.MenuCreator; import com.moribitotech.mtx.models.base.EmptyAbstractActor; import com.moribitotech.mtx.models.base.TableModel; import com.moribitotech.mtx.settings.AppSettings; public class GameLevelEndScreenHelper implements ScreenHelper{ public TableModel readyMenuTable; private boolean isDronaPlacedAtLeft = true; private ButtonGame levelInfoButton,playButton,backButton,creditsButton; private EmptyAbstractActor dronaAnimation; private final float dipRatioWidth = 580*AppSettings.getWorldPositionXRatio(); private final float dipRatioHeight = 85*AppSettings.getWorldPositionYRatio(); @Override public void setUpMenu(final GameScreen gameScreen) { dronaAnimation = new EmptyAbstractActor(2048/8f, 275, true); dronaAnimation.setPosition(-dronaAnimation.getWidth(),300*AppSettings.getWorldPositionYRatio()); dronaAnimation.setAnimation(Assets.dronaFlying, true, true); readyMenuTable = new TableModel(Assets.highscore_table, 750*AppSettings.getWorldPositionXRatio(), 420*AppSettings.getWorldPositionYRatio()); readyMenuTable.setPosition(100*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H + 1.2f*readyMenuTable.getHeight()); levelInfoButton = MenuCreator.createCustomGameButton(Assets.gameFont, Assets.rectangle_button2, Assets.rectangle_button2); levelInfoButton.setTextPosXY(40*AppSettings.getWorldPositionXRatio(), 50*AppSettings.getWorldPositionYRatio()); playButton = MenuCreator.createCustomGameButton(Assets.gameFont, Assets.rectangle_button2, Assets.rectangle_button2); playButton.setTextPosXY(50*AppSettings.getWorldPositionXRatio(), 50*AppSettings.getWorldPositionYRatio()); playButton.setText("Continue", true); playButton.addListener(new ActorGestureListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); sendAwayMenu(gameScreen); Gdx.app.log("A HIT", "GAME WENT FROM READY TO RUNNING STATE"); gameScreen.playerContinuesGame = true; GameScreen.currentlevel++; Settings.addToUnLockedLevel(GameScreen.currentlevel); gameScreen.createNewWorld(); GameScreen.state = GameScreen.GAME_READY; } }); creditsButton = MenuCreator.createCustomGameButton(Assets.gameFont, Assets.nothing, Assets.nothing, 400*AppSettings.getWorldPositionXRatio(), 85*AppSettings.getWorldPositionYRatio(), true); creditsButton.setPosition(260*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H +2*creditsButton.getHeight()); creditsButton.setTextureExternalSize(400*AppSettings.getWorldPositionXRatio(), 85*AppSettings.getWorldPositionYRatio()); gameScreen.getStage().addActor(creditsButton); backButton = MenuCreator.createCustomGameButton(Assets.gameFont, Assets.rectangle_button2, Assets.rectangle_button2); backButton.setTextPosXY(70*AppSettings.getWorldPositionXRatio(), 50*AppSettings.getWorldPositionYRatio()); backButton.setText("Main Menu", true); backButton.addListener(new ActorGestureListener() { @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); sendAwayMenu(gameScreen); Gdx.app.log("A HIT", "GAME WENT FROM READY TO RUNNING STATE"); gameScreen.playerContinuesGame = true; gameScreen.saveGameStates(); gameScreen.resetGame(); gameScreen.getGame().setScreen(new MainMenuScreen(gameScreen.getGame(), "MainMenuScreen")); } }); readyMenuTable.add(levelInfoButton).size(dipRatioWidth, dipRatioHeight).center(); readyMenuTable.row(); readyMenuTable.add(backButton).size(2*dipRatioWidth/3, dipRatioHeight).center(); readyMenuTable.row(); readyMenuTable.add(playButton).size(dipRatioWidth/2, dipRatioHeight).center(); gameScreen.getStage().addActor(readyMenuTable); gameScreen.getStage().addActor(dronaAnimation); } @Override public void sendInMenu(GameScreen gameScreen) { // SEND AWAY ALL THE SCREEN HELPERS FIRST Assets.playSound(Assets.victory); if(!isDronaPlacedAtLeft){ dronaAnimation.setPosition(-dronaAnimation.getWidth(),300*AppSettings.getWorldPositionYRatio()); } gameScreen.sendAwayAllScreenHelpers(); //Display How Bravely the player Played the Level switch(World.creditsStar){ case 1: creditsButton.setTextureExternal(Assets.star1, true); break; case 2: creditsButton.setTextureExternal(Assets.star2, true); break; case 3: creditsButton.setTextureExternal(Assets.star3, true); break; case 4: creditsButton.setTextureExternal(Assets.star4, true); break; case 5: creditsButton.setTextureExternal(Assets.star5, true); break; default: creditsButton.setTextureExternal(Assets.star5, true); break; } levelInfoButton.setText(" LEVEL "+GameScreen.currentlevel+" COMPLETED", true); gameScreen.isLevelEndMenuDisplaying = true; creditsButton.addAction(Actions.moveTo(260*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H -1.1f*creditsButton.getHeight(), 0.5f)); readyMenuTable.addAction(Actions.moveTo(100*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H - 1.2f*readyMenuTable.getHeight(), 0.5f)); dronaAnimation.addAction(Actions.moveTo(AppSettings.SCREEN_W-2*dronaAnimation.getWidth(), 300*AppSettings.getWorldPositionYRatio(), 1.5f)); } @Override public void sendAwayMenu(GameScreen gameScreen) { gameScreen.isLevelEndMenuDisplaying = false; isDronaPlacedAtLeft = false; readyMenuTable.addAction(Actions.moveTo(100*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H + 1.2f*readyMenuTable.getHeight(), 0.5f)); dronaAnimation.addAction(Actions.moveTo(AppSettings.SCREEN_W+dronaAnimation.getWidth(), AppSettings.SCREEN_H, 1.0f)); creditsButton.addAction(Actions.moveTo(260*AppSettings.getWorldPositionXRatio(), AppSettings.SCREEN_H +2*creditsButton.getHeight(), 0.5f)); Assets.victory.stop(); } }