From ec2f42c75cd77d30e0be5f7232eb558442ab08a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz> Date: Mon, 9 Feb 2015 09:33:08 +0100 Subject: [PATCH] #7 Use of input multiplexer for handling input from different screens --- core/src/cz/nic/tablexia/Tablexia.java | 2 -- .../cz/nic/tablexia/TablexiaApplication.java | 25 ++++++++++++++----- .../game/games/robbery/GameScreen.java | 1 - .../game/games/robbery/RuleScreen.java | 2 -- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java index 74e081161..114f83b1c 100644 --- a/core/src/cz/nic/tablexia/Tablexia.java +++ b/core/src/cz/nic/tablexia/Tablexia.java @@ -55,8 +55,6 @@ public class Tablexia extends TablexiaApplication { super.create(); Log.setLoglevel(TablexiaLogLevel.DEBUG); - Gdx.input.setInputProcessor(getStage()); - // init event bus handlers ApplicationBus.getInstance().subscribe(this); ScreenDefinition.initBus(); diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java index 490cffa0f..64a1ce1ca 100644 --- a/core/src/cz/nic/tablexia/TablexiaApplication.java +++ b/core/src/cz/nic/tablexia/TablexiaApplication.java @@ -9,7 +9,7 @@ import static com.badlogic.gdx.scenes.scene2d.actions.Actions.sequence; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Screen; +import com.badlogic.gdx.InputMultiplexer; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Pixmap.Format; @@ -33,7 +33,9 @@ public abstract class TablexiaApplication implements ApplicationListener { private AbstractTablexiaScreen lastScreen; private AbstractTablexiaScreen screen; + private InputMultiplexer inputMultiplexer; private Stage stage; + public Stage getStage() { return stage; @@ -44,9 +46,16 @@ public abstract class TablexiaApplication implements ApplicationListener { @Override public void dispose () { + inputMultiplexer.removeProcessor(stage); stage.dispose(); - if (lastScreen != null) lastScreen.hide(); - if (screen != null) screen.hide(); + if (lastScreen != null) { + lastScreen.hide(); + lastScreen.dispose(); + } + if (screen != null) { + screen.hide(); + screen.dispose(); + } } @Override @@ -64,6 +73,8 @@ public abstract class TablexiaApplication implements ApplicationListener { @Override public void create() { stage = new Stage(); + inputMultiplexer = new InputMultiplexer(stage); + Gdx.input.setInputProcessor(inputMultiplexer); } @Override @@ -166,15 +177,17 @@ public abstract class TablexiaApplication implements ApplicationListener { return screen; } - private void processNewScreen(Screen newScreen) { + private void processNewScreen(AbstractTablexiaScreen newScreen) { if (newScreen != null) { + inputMultiplexer.addProcessor(newScreen.getStage()); newScreen.show(); newScreen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); } } - private void processLastScreen(Screen lastScreen) { - if (lastScreen != null) { + private void processLastScreen(AbstractTablexiaScreen lastScreen) { + if (lastScreen != null) { + inputMultiplexer.removeProcessor(lastScreen.getStage()); lastScreen.hide(); lastScreen.dispose(); lastScreen = null; diff --git a/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java b/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java index d1094e7e3..16dad7817 100644 --- a/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java +++ b/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java @@ -250,7 +250,6 @@ public class GameScreen extends AbstractTablexiaScreen { @Override public void show() { super.show(); - Gdx.input.setInputProcessor(getStage()); getStage().addActor(new GameBackground()); getStage().addActor(colorInfoLayer); diff --git a/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java b/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java index 807ec08ae..9b320bde0 100644 --- a/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java +++ b/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java @@ -2,7 +2,6 @@ package cz.nic.tablexia.game.games.robbery; import java.util.Locale; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; @@ -93,7 +92,6 @@ public class RuleScreen extends AbstractTablexiaScreen { @Override public void show() { super.show(); - Gdx.input.setInputProcessor(getStage()); if (!loadingComplete) { RobberyTextureManager.getInstance().load(); -- GitLab