package com.tacoid.pweekmini.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.Screen; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Button; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.tacoid.pweekmini.PweekMini; import com.tacoid.pweek.MusicPlayer; import com.tacoid.pweek.MusicPlayer.MusicType; import com.tacoid.pweek.SoundPlayer; import com.tacoid.pweek.SoundPlayer.SoundType; import com.tacoid.pweek.actors.MusicButtonActor; import com.tacoid.pweek.actors.SoundButtonActor; import com.tacoid.pweekmini.SwingMenu; import com.tacoid.tracking.TrackingManager; public class MainMenuScreen implements Screen, InputProcessor { private static final int VIRTUAL_WIDTH = 480; private static final int VIRTUAL_HEIGHT = 800; private static MainMenuScreen instance = null; private Stage stage; private SwingMenu menu; int i = 0; private MainMenuScreen() { init(); } private void addButton(Button button, int x, int y) { stage.addActor(button); button.setX(x); button.setY(y); } public void init() { MusicPlayer.getInstance().setVolume(0.8f); MusicPlayer.getInstance().playMusic(MusicType.MAIN, true); stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false); stage.addActor(new Image(new TextureRegion(PweekMini.getInstance().manager.get("images/background.png", Texture.class), 480, 800))); menu = new SwingMenu(); menu.initBegin("main"); { /* SOLO BUTTON */ TextureRegion playRegion = PweekMini.getInstance().atlasPlank.findRegion("solo"); menu.addButton(new SoloButton(playRegion, playRegion)); /* CHRONO BUTTON */ TextureRegion chronoRegion = PweekMini.getInstance().atlasPlank.findRegion("chrono"); menu.addButton(new ChronoButton(chronoRegion, chronoRegion)); /* Exit BUTTON */ TextureRegion exitRegion = PweekMini.getInstance().atlasPlank.findRegion("quitter"); menu.addButton(new ExitButton(exitRegion, exitRegion)); } menu.initEnd(); stage.addActor(menu); addButton(MusicButtonActor.createMusicButton(PweekMini.getInstance().atlasBouttons),VIRTUAL_WIDTH-64, VIRTUAL_HEIGHT-64); addButton(SoundButtonActor.createSoundButton(PweekMini.getInstance().atlasBouttons),VIRTUAL_WIDTH-2*64-10, VIRTUAL_HEIGHT-64); menu.hideInstant(); menu.show("main"); Image logo = new Image(PweekMini.getInstance().atlasPlank.findRegion("pweek")); logo.setPosition(VIRTUAL_WIDTH/2 - logo.getWidth()/2, VIRTUAL_HEIGHT- logo.getHeight()-70); stage.addActor(logo); } static public MainMenuScreen getInstance() { if (instance == null) { instance = new MainMenuScreen(); } return instance; } @Override public void dispose() { Gdx.app.log("MainScreen", "paused"); } @Override public void hide() { // TODO Auto-generated method stub } @Override public void pause() { // TODO Auto-generated method stub } @Override public void render(float arg0) { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.draw(); stage.act(Gdx.graphics.getDeltaTime()); } @Override public void resize(int arg0, int arg1) { stage.setViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, false); stage.getCamera().position.set(VIRTUAL_WIDTH / 2, VIRTUAL_HEIGHT / 2, 0); } @Override public void resume() { show(); } @Override public void show() { PweekMini.getInstance().getHandler().showAds(true); resize(0, 0); Gdx.input.setInputProcessor(this); } private class SoloButton extends Button{ public SoloButton(TextureRegion regionUp, TextureRegion regionDown) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown)); addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { GameSoloScreen.getInstance().init(); TrackingManager.getTracker().trackEvent("gameplay", "game_start", "solo", null); PweekMini.getInstance().setScreen(GameSoloScreen.getInstance()); } }); } } private class ChronoButton extends Button{ public ChronoButton(TextureRegion regionUp, TextureRegion regionDown) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown)); addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { GameTimeAttackScreen.getInstance().init(); TrackingManager.getTracker().trackEvent("gameplay", "game_start", "chrono", null); PweekMini.getInstance().setScreen(GameTimeAttackScreen.getInstance()); } }); } } private class ExitButton extends Button{ public ExitButton(TextureRegion regionUp, TextureRegion regionDown) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown)); addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { TrackingManager.getTracker().trackEvent("UI", "button_click", "quit", null); Gdx.app.exit(); } }); } } @Override public boolean keyDown(int key) { switch (key) { case Keys.BACK: if(!menu.getCurrentMenu().equals("main")) { menu.switchMenuAnimated("main"); } else { TrackingManager.getTracker().trackEvent("UI", "button_click", "android_quit", null); Gdx.app.exit(); } } return false; } @Override public boolean keyTyped(char arg0) { // TODO Auto-generated method stub return false; } @Override public boolean keyUp(int arg0) { // TODO Auto-generated method stub return false; } @Override public boolean scrolled(int arg0) { // TODO Auto-generated method stub return false; } @Override public boolean touchDown(int x, int y, int pointer, int button) { return stage.touchDown(x, y, pointer, button); } @Override public boolean touchDragged(int arg0, int arg1, int arg2) { return stage.touchDragged(arg0, arg1, arg2); } @Override public boolean mouseMoved(int x, int y) { return stage.mouseMoved(x, y); } @Override public boolean touchUp(int x, int y, int pointer, int button) { return stage.touchUp(x, y, pointer, button); } }