package io.github.lonamiwebs.klooni.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import io.github.lonamiwebs.klooni.Klooni; import io.github.lonamiwebs.klooni.actors.SoftButton; // Main menu screen, presenting some options (play, customize…) public class MainMenuScreen extends InputListener implements Screen { //region Members private final Klooni game; private final Stage stage; //endregion //region Static members // As the examples show on the LibGdx wiki private static final float minDelta = 1/30f; //endregion //region Constructor public MainMenuScreen(Klooni game) { this.game = game; stage = new Stage(); Table table = new Table(); table.setFillParent(true); stage.addActor(table); // Play button final SoftButton playButton = new SoftButton( 0, GameScreen.hasSavedData() ? "play_saved_texture" : "play_texture"); playButton.addListener(new ChangeListener() { public void changed (ChangeEvent event, Actor actor) { MainMenuScreen.this.game.transitionTo( new GameScreen(MainMenuScreen.this.game, GameScreen.GAME_MODE_SCORE)); } }); table.add(playButton).colspan(3).fill().space(16); table.row(); // Star button (on GitHub) final SoftButton starButton = new SoftButton(1, "star_texture"); starButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { Gdx.net.openURI("https://github.com/LonamiWebs/Klooni1010/stargazers"); } }); table.add(starButton).space(16); // Time mode final SoftButton statsButton = new SoftButton(2, "stopwatch_texture"); statsButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { MainMenuScreen.this.game.transitionTo( new GameScreen(MainMenuScreen.this.game, GameScreen.GAME_MODE_TIME)); } }); table.add(statsButton).space(16); // Palette button (buy colors) final SoftButton paletteButton = new SoftButton(3, "palette_texture"); paletteButton.addListener(new ChangeListener() { public void changed (ChangeEvent event, Actor actor) { // Don't dispose because then it needs to take us to the previous screen MainMenuScreen.this.game.transitionTo(new CustomizeScreen( MainMenuScreen.this.game, MainMenuScreen.this.game.getScreen()), false); } }); table.add(paletteButton).space(16); } //endregion //region Screen @Override public void show() { Gdx.input.setInputProcessor(stage); } @Override public void render(float delta) { Klooni.theme.glClearBackground(); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(Math.min(Gdx.graphics.getDeltaTime(), minDelta)); stage.draw(); if (Gdx.input.isKeyJustPressed(Input.Keys.BACK)) { Gdx.app.exit(); } } @Override public void resize(int width, int height) { stage.getViewport().update(width, height, true); } @Override public void dispose() { stage.dispose(); } //endregion //region Unused methods @Override public void pause() { } @Override public void resume() { } @Override public void hide() { } //endregion }