diff options
-rw-r--r-- | core/src/ch/asynk/tankontank/screens/GameScreen.java | 3 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/screens/LoadScreen.java | 2 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/screens/OptionsScreen.java | 151 |
3 files changed, 153 insertions, 3 deletions
diff --git a/core/src/ch/asynk/tankontank/screens/GameScreen.java b/core/src/ch/asynk/tankontank/screens/GameScreen.java index b8ba533..f04282e 100644 --- a/core/src/ch/asynk/tankontank/screens/GameScreen.java +++ b/core/src/ch/asynk/tankontank/screens/GameScreen.java @@ -26,7 +26,6 @@ import com.badlogic.gdx.utils.viewport.ScreenViewport; import ch.asynk.tankontank.TankOnTank; import ch.asynk.tankontank.game.Ctrl; -import ch.asynk.tankontank.game.Config; public class GameScreen implements Screen { @@ -62,7 +61,7 @@ public class GameScreen implements Screen { this.game = game; - this.ctrl = new Ctrl(game, new Config()); + this.ctrl = new Ctrl(game); virtualWidth = ctrl.map.getWidth(); virtualHeight = ctrl.map.getHeight(); diff --git a/core/src/ch/asynk/tankontank/screens/LoadScreen.java b/core/src/ch/asynk/tankontank/screens/LoadScreen.java index a9419be..6883f7b 100644 --- a/core/src/ch/asynk/tankontank/screens/LoadScreen.java +++ b/core/src/ch/asynk/tankontank/screens/LoadScreen.java @@ -49,7 +49,7 @@ public class LoadScreen implements Screen if (delay >= 0.2f) { Gdx.app.debug("LoadScreen", "assets loaded : " + (Gdx.app.getJavaHeap()/1024.0f) + "KB"); game.onLoaded(); - game.setScreen(new GameScreen(game)); + game.setScreen(new OptionsScreen(game)); dispose(); } } diff --git a/core/src/ch/asynk/tankontank/screens/OptionsScreen.java b/core/src/ch/asynk/tankontank/screens/OptionsScreen.java new file mode 100644 index 0000000..232e8ab --- /dev/null +++ b/core/src/ch/asynk/tankontank/screens/OptionsScreen.java @@ -0,0 +1,151 @@ +package ch.asynk.tankontank.screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Screen; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.utils.viewport.FitViewport; +import com.badlogic.gdx.scenes.scene2d.ui.Label; +import com.badlogic.gdx.scenes.scene2d.ui.CheckBox; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.InputListener; + +import ch.asynk.tankontank.TankOnTank; + +public class OptionsScreen implements Screen +{ + private final TankOnTank game; + + private Stage stage; + private Label title; + private TextButton okButton; + private CheckBox showMovesCk; + private CheckBox showTargetsCk; + private CheckBox showMoveAssistsCk; + private CheckBox canCancelCk; + private CheckBox mustValidateCk; + private CheckBox showEnemyPossibilitiesCk; + + public OptionsScreen(final TankOnTank game) + { + this.game = game; + } + + @Override + public void render(float delta) + { + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + + stage.act(); + stage.draw(); + } + + private void apply() + { + game.config.showMoves = showMovesCk.isChecked(); + game.config.showTargets = showTargetsCk.isChecked(); + game.config.showMoveAssists = showMoveAssistsCk.isChecked(); + game.config.canCancel = canCancelCk.isChecked(); + game.config.mustValidate = mustValidateCk.isChecked(); + game.config.showEnemyPossibilities = showEnemyPossibilitiesCk.isChecked(); + } + + @Override + public void show() + { + Gdx.app.debug("OptionsScreen", "show()"); + + stage = new Stage(new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight())); + Gdx.input.setInputProcessor(stage); + + title = new Label("Options", game.skin); + okButton = new TextButton("OK", game.skin); + showMovesCk = new CheckBox("Show Moves", game.skin); + showTargetsCk = new CheckBox("Show Targets", game.skin); + showMoveAssistsCk = new CheckBox("Show Moves Assists", game.skin); + canCancelCk = new CheckBox("Can Cancel", game.skin); + mustValidateCk = new CheckBox("Must Validate", game.skin); + showEnemyPossibilitiesCk = new CheckBox("Show Enemy Possibilities", game.skin); + + showMovesCk.setChecked(game.config.showMoves); + showTargetsCk.setChecked(game.config.showTargets); + showMoveAssistsCk.setChecked(game.config.showMoveAssists); + canCancelCk.setChecked(game.config.canCancel); + mustValidateCk.setChecked(game.config.mustValidate); + showEnemyPossibilitiesCk.setChecked(game.config.showEnemyPossibilities); + + okButton.addListener(new InputListener() { + public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { + return true; + } + public void touchUp (InputEvent event, float x, float y, int pointer, int button) { + apply(); + game.setScreen(new GameScreen(game)); + } + }); + + stage.addActor(title); + stage.addActor(showMovesCk); + stage.addActor(showTargetsCk); + stage.addActor(showMoveAssistsCk); + stage.addActor(canCancelCk); + stage.addActor(mustValidateCk); + stage.addActor(showEnemyPossibilitiesCk); + stage.addActor(okButton); + + game.loadAssets(); + } + + @Override + public void resize(int width, int height) + { + // Gdx.app.debug("OptionsScreen", "resize (" + width + "," + height + ")"); + + stage.getViewport().update(width, height, true); + + float x = ((width / 2) - 100f); + float y = (height - 100f); + title.setPosition(x, y); + y -= 20f; + showMovesCk.setPosition(x, y); + y -= 20f; + showTargetsCk.setPosition(x, y); + y -= 20f; + showMoveAssistsCk.setPosition(x, y); + y -= 20f; + canCancelCk.setPosition(x, y); + y -= 20f; + mustValidateCk.setPosition(x, y); + y -= 20f; + showEnemyPossibilitiesCk.setPosition(x, y); + x += 200f; + y -= 40f; + okButton.setPosition(x, y); + } + + @Override + public void dispose() + { + // Gdx.app.debug("LoadScreen", "dispose()"); + stage.dispose(); + } + + @Override + public void hide() + { + // Gdx.app.debug("LoadScreen", "hide()"); + } + + @Override + public void pause() + { + // Gdx.app.debug("LoadScreen", "pause()"); + } + + @Override + public void resume() + { + // Gdx.app.debug("LoadScreen", "resume()"); + } +} |