summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2018-10-02 11:51:56 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2018-10-02 11:51:56 +0200
commit589938042a1a77babf3f23482e03275949ea789a (patch)
treef87df3c848a778c35b6a0852e8aadf571080a381
parent9e6b127d1aad4dc9890b525b852ece2a3f9a2038 (diff)
downloadgdx-boardgame-589938042a1a77babf3f23482e03275949ea789a.zip
gdx-boardgame-589938042a1a77babf3f23482e03275949ea789a.tar.gz
test : extract AbstractScreen from Board,Menu,UiScreen
-rw-r--r--test/src/ch/asynk/gdx/tabletop/test/AbstractScreen.java168
-rw-r--r--test/src/ch/asynk/gdx/tabletop/test/BoardScreen.java172
-rw-r--r--test/src/ch/asynk/gdx/tabletop/test/MenuScreen.java162
-rw-r--r--test/src/ch/asynk/gdx/tabletop/test/UiScreen.java156
4 files changed, 263 insertions, 395 deletions
diff --git a/test/src/ch/asynk/gdx/tabletop/test/AbstractScreen.java b/test/src/ch/asynk/gdx/tabletop/test/AbstractScreen.java
new file mode 100644
index 0000000..0c81bfb
--- /dev/null
+++ b/test/src/ch/asynk/gdx/tabletop/test/AbstractScreen.java
@@ -0,0 +1,168 @@
+package ch.asynk.gdx.tabletop.test;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Screen;
+import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.Camera;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.InputAdapter;
+import com.badlogic.gdx.InputMultiplexer;
+import com.badlogic.gdx.input.GestureDetector;
+import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
+import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.math.Vector3;
+
+import ch.asynk.gdx.tabletop.ui.Root;
+
+public abstract class AbstractScreen implements Screen
+{
+ protected final float WORLD_RATIO = 0.5f;
+ private static final float INPUT_DELAY = 0.1f; // filter out touches after gesture
+ private static final float ZOOM_SCROLL_FACTOR = .1f;
+ private static final float ZOOM_GESTURE_FACTOR = .01f;
+
+ protected final Vector2 dragPos = new Vector2();
+ protected final Vector3 boardTouch = new Vector3();
+ protected final Vector3 hudTouch = new Vector3();
+
+ protected final String dom;
+ protected final GdxBoardTest app;
+ protected final SpriteBatch batch;
+ protected final Texture bg;
+ protected final Root root;
+ protected Camera camera;
+ protected boolean inputBlocked;
+ protected float inputDelay;
+ protected boolean paused;
+
+ protected abstract void feed();
+ public AbstractScreen(final GdxBoardTest app, final String dom)
+ {
+ this.app = app;
+ this.dom = dom;
+ this.batch = new SpriteBatch();
+ this.bg = app.assets.getTexture(app.assets.MAP_00);
+ this.root = new Root(1);
+ this.root.setPadding(15);
+ feed();
+ Gdx.input.setInputProcessor(getMultiplexer());
+ this.inputBlocked = false;
+ this.inputDelay = 0f;
+ this.paused = false;
+ }
+
+ protected abstract void draw(SpriteBatch batch);
+ @Override public void render(float delta)
+ {
+ if (paused) return;
+
+ Gdx.gl.glClearColor(1, 1, 1, 1);
+ Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
+
+ camera.update();
+ batch.setProjectionMatrix(camera.combined);
+ batch.begin();
+ draw(batch);
+ batch.end();
+ }
+
+ @Override public void resize(int width, int height)
+ {
+ GdxBoardTest.debug(dom, String.format("resize (%d,%d)",width, height));
+ if (width >= height) {
+ camera.viewportWidth = bg.getWidth();
+ camera.viewportHeight = bg.getHeight() / (float)width * (float)height;
+ } else {
+ camera.viewportHeight = bg.getHeight();
+ camera.viewportWidth = bg.getWidth() / (float)height * (float)width;
+ }
+ camera.viewportWidth *= WORLD_RATIO;
+ camera.viewportHeight *= WORLD_RATIO;
+ camera.update();
+ root.resize(
+ camera.position.x - (camera.viewportWidth / 2f),
+ camera.position.y - (camera.viewportHeight / 2f),
+ camera.viewportWidth,
+ camera.viewportHeight
+ );
+ }
+
+ @Override public void dispose()
+ {
+ GdxBoardTest.debug(dom, "dispose()");
+ batch.dispose();
+ }
+
+ @Override public void show()
+ {
+ GdxBoardTest.debug(dom, "show()");
+ paused = false;
+ }
+
+ @Override public void hide()
+ {
+ GdxBoardTest.debug(dom, "hide()");
+ paused = true;
+ }
+
+ @Override public void pause()
+ {
+ GdxBoardTest.debug(dom, "pause() ");
+ paused = true;
+ }
+
+ @Override public void resume()
+ {
+ GdxBoardTest.debug(dom, "resume() ");
+ resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
+ paused = false;
+ }
+
+ protected abstract void onTouch(int x, int y);
+ protected abstract void onZoom(float dz);
+ protected abstract void onDragged(int dx, int dy);
+ private InputMultiplexer getMultiplexer()
+ {
+ final InputMultiplexer multiplexer = new InputMultiplexer();
+ multiplexer.addProcessor(new InputAdapter() {
+ @Override public boolean scrolled(int amount)
+ {
+ onZoom(amount * ZOOM_SCROLL_FACTOR);
+ return true;
+ }
+ @Override public boolean touchDown(int x, int y, int pointer, int button)
+ {
+ if (inputBlocked) return true;
+ if (button == Input.Buttons.LEFT) {
+ dragPos.set(x, y);
+ onTouch(x, y);
+ }
+ return true;
+ }
+ @Override public boolean touchDragged(int x, int y, int pointer)
+ {
+ int dx = (int) (dragPos.x - x);
+ int dy = (int) (dragPos.y - y);
+ dragPos.set(x, y);
+ onDragged(dx, dy);
+ return true;
+ }
+ });
+ multiplexer.addProcessor(new GestureDetector(new GestureAdapter() {
+ @Override public boolean zoom(float initialDistance, float distance)
+ {
+ if (initialDistance > distance)
+ onZoom(ZOOM_GESTURE_FACTOR);
+ else
+ onZoom(-ZOOM_GESTURE_FACTOR);
+ inputBlocked = true;
+ inputDelay = INPUT_DELAY;
+ return true;
+ }
+ }));
+
+ return multiplexer;
+ }
+}
diff --git a/test/src/ch/asynk/gdx/tabletop/test/BoardScreen.java b/test/src/ch/asynk/gdx/tabletop/test/BoardScreen.java
index 3ef9dea..d52670c 100644
--- a/test/src/ch/asynk/gdx/tabletop/test/BoardScreen.java
+++ b/test/src/ch/asynk/gdx/tabletop/test/BoardScreen.java
@@ -1,29 +1,18 @@
package ch.asynk.gdx.tabletop.test;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.InputAdapter;
-import com.badlogic.gdx.InputMultiplexer;
-import com.badlogic.gdx.input.GestureDetector;
-import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
import com.badlogic.gdx.math.Vector2;
-import com.badlogic.gdx.math.Vector3;
import ch.asynk.gdx.tabletop.Camera;
import ch.asynk.gdx.tabletop.Board;
import ch.asynk.gdx.tabletop.board.BoardFactory;
import ch.asynk.gdx.tabletop.ui.Button;
-public class BoardScreen implements Screen
+public class BoardScreen extends AbstractScreen
{
- private static final String DOM = "BoardScreen";
- private static final float INPUT_DELAY = 0.1f; // filter out touches after gesture
- private static final float ZOOM_SCROLL_FACTOR = .1f;
- private static final float ZOOM_GESTURE_FACTOR = .01f;
private static final boolean DEBUG = true;
@@ -123,20 +112,6 @@ public class BoardScreen implements Screen
}
}
- private final GdxBoardTest app;
- private final MyBoard board;
- private final Camera camera;
- private final SpriteBatch batch;
- private final Button btn;
-
- private final Vector2 dragPos = new Vector2();
- private final Vector3 boardTouch = new Vector3();
- private final Vector3 hudTouch = new Vector3();
-
- private boolean paused;
- private float inputDelay;
- private boolean inputBlocked;
-
public enum State
{
HEX_V, HEX_H, SQUARE, TRI_H, TRI_V, DONE;
@@ -160,24 +135,28 @@ public class BoardScreen implements Screen
}
private State state;
+ private Camera cam;
+ private MyBoard board;
+ private Button btn;
+
public BoardScreen(final GdxBoardTest app)
{
- this.app = app;
+ super(app, "");
+ }
+
+ @Override protected void feed()
+ {
this.board = new MyBoard(app.assets);
- this.batch = new SpriteBatch();
- this.camera = new Camera(10, board.w, board.h, 1.0f, 0.3f, false);
+ this.camera = this.cam = new Camera(10, board.w, board.h, 1.0f, 0.3f, false);
this.btn = new Button(
app.assets.getFont(app.assets.FONT_25),
app.assets.getNinePatch(app.assets.PATCH, 23, 23, 23 ,23),
15);
this.btn.write("next");
- Gdx.input.setInputProcessor(getMultiplexer(this));
setState(State.HEX_V);
- this.inputBlocked = false;
- this.inputDelay = 0f;
- this.paused = false;
}
+ @Override public void draw(SpriteBatch batch) { }
@Override public void render(float delta)
{
if (paused) return;
@@ -191,14 +170,14 @@ public class BoardScreen implements Screen
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
- camera.applyMapViewport();
- batch.setProjectionMatrix(camera.combined);
+ cam.applyMapViewport();
+ batch.setProjectionMatrix(cam.combined);
batch.begin();
board.draw(batch);
batch.end();
- camera.applyHudViewport();
- batch.setProjectionMatrix(camera.getHudMatrix());
+ cam.applyHudViewport();
+ batch.setProjectionMatrix(cam.getHudMatrix());
batch.begin();
btn.draw(batch);
batch.end();
@@ -207,125 +186,46 @@ public class BoardScreen implements Screen
@Override public void resize(int width, int height)
{
GdxBoardTest.debug("BoardScrean", String.format("resize (%d,%d)",width, height));
- camera.updateViewport(width, height);
+ cam.updateViewport(width, height);
}
- @Override public void dispose()
+ @Override protected void onDragged(int dx, int dy)
{
- GdxBoardTest.debug("BoardScrean", "dispose()");
- batch.dispose();
+ cam.translate(dx, dy);
}
- @Override public void show()
+ @Override protected void onTouch(int x, int y)
{
- GdxBoardTest.debug("BoardScrean", "show()");
- paused = false;
- }
-
- @Override public void hide()
- {
- GdxBoardTest.debug("BoardScrean", "hide()");
- paused = true;
- }
-
- @Override public void pause()
- {
- GdxBoardTest.debug("pause() ");
- paused = true;
- }
-
- @Override public void resume()
- {
- GdxBoardTest.debug("resume() ");
- resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
- paused = false;
+ cam.unproject(x, y, boardTouch);
+ cam.unprojectHud(x, y, hudTouch);
+ if (btn.touch(hudTouch.x, hudTouch.y)) {
+ setState(state.next());
+ } else {
+ board.touch(boardTouch.x, boardTouch.y);
+ }
}
- private void zoom(float dz)
+ @Override protected void onZoom(float dz)
{
- camera.zoom(dz);
+ cam.zoom(dz);
resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
- private void nextState()
- {
- setState(this.state.next());
- }
-
private void setState(State state)
{
switch (state) {
- case HEX_V:
- board.setHEX_V();
- break;
- case HEX_H:
- board.setHEX_H();
- break;
- case SQUARE:
- board.setSQUARE();
- break;
- case TRI_H:
- board.setTRI_H();
- break;
- case TRI_V:
- board.setTRI_V();
- break;
+ case HEX_V: board.setHEX_V(); break;
+ case HEX_H: board.setHEX_H(); break;
+ case SQUARE: board.setSQUARE(); break;
+ case TRI_H: board.setTRI_H(); break;
+ case TRI_V: board.setTRI_V(); break;
case DONE:
this.app.switchToMenu();
return;
}
board.reset();
- this.camera.setDimension(board.w, board.h);
- zoom(1);
+ cam.setDimension(board.w, board.h);
+ onZoom(1);
this.state = state;
}
-
- private InputMultiplexer getMultiplexer(final BoardScreen screen)
- {
- final InputMultiplexer multiplexer = new InputMultiplexer();
- multiplexer.addProcessor(new InputAdapter() {
- @Override public boolean scrolled(int amount)
- {
- zoom(amount * ZOOM_SCROLL_FACTOR);
- return true;
- }
- @Override public boolean touchDown(int x, int y, int pointer, int button)
- {
- if (inputBlocked) return true;
- if (button == Input.Buttons.LEFT) {
- dragPos.set(x, y);
- camera.unproject(x, y, boardTouch);
- camera.unprojectHud(x, y, hudTouch);
- if (btn.touch(hudTouch.x, hudTouch.y)) {
- nextState();
- } else {
- board.touch(boardTouch.x, boardTouch.y);
- }
- }
- return true;
- }
- @Override public boolean touchDragged(int x, int y, int pointer)
- {
- int dx = (int) (dragPos.x - x);
- int dy = (int) (dragPos.y - y);
- dragPos.set(x, y);
- camera.translate(dx, dy);
- return true;
- }
- });
- multiplexer.addProcessor(new GestureDetector(new GestureAdapter() {
- @Override public boolean zoom(float initialDistance, float distance)
- {
- if (initialDistance > distance)
- screen.zoom(ZOOM_GESTURE_FACTOR);
- else
- screen.zoom(-ZOOM_GESTURE_FACTOR);
- inputBlocked = true;
- inputDelay = INPUT_DELAY;
- return true;
- }
- }));
-
- return multiplexer;
- }
}
diff --git a/test/src/ch/asynk/gdx/tabletop/test/MenuScreen.java b/test/src/ch/asynk/gdx/tabletop/test/MenuScreen.java
index 892182a..bf94e75 100644
--- a/test/src/ch/asynk/gdx/tabletop/test/MenuScreen.java
+++ b/test/src/ch/asynk/gdx/tabletop/test/MenuScreen.java
@@ -1,48 +1,27 @@
package ch.asynk.gdx.tabletop.test;
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Screen;
-import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.OrthographicCamera;
-import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.InputAdapter;
-import com.badlogic.gdx.InputMultiplexer;
-import com.badlogic.gdx.math.Vector3;
import ch.asynk.gdx.tabletop.ui.Alignment;
import ch.asynk.gdx.tabletop.ui.Menu;
-import ch.asynk.gdx.tabletop.ui.Root;
-public class MenuScreen implements Screen
+public class MenuScreen extends AbstractScreen
{
- private static final String DOM = "MenuScreen";
-
- private final GdxBoardTest app;
- private final OrthographicCamera cam;
- private final SpriteBatch batch;
- private final Texture bg;
- private final Sprite corner;
- private final Root root;
- private final Menu menu;
- private boolean paused;
-
- private final float WORLD_RATIO = 0.5f;
- private final int PADDING = 15;
-
- private final Vector3 touch = new Vector3();
+ private Sprite corner;
+ private Menu menu;
public MenuScreen(final GdxBoardTest app)
{
- this.app = app;
- this.batch = new SpriteBatch();
+ super(app, "MenuScreen");
+ }
+
+ @Override protected void feed()
+ {
final Assets assets = app.assets;
- this.bg = assets.getTexture(assets.MAP_00);
this.corner = new Sprite(assets.getTexture(assets.CORNER));
- this.root = new Root(1);
this.menu = new Menu(
assets.getFont(assets.FONT_25),
assets.getNinePatch(assets.PATCH, 23, 23, 23 ,23),
@@ -54,127 +33,54 @@ public class MenuScreen implements Screen
this.menu.setLabelsOffset(10);
this.root.add(this.menu);
- this.cam = new OrthographicCamera(bg.getWidth() * WORLD_RATIO, bg.getHeight() * WORLD_RATIO);
- this.cam.position.set(bg.getWidth() / 2f, bg.getHeight() / 2f, 0);
- this.cam.update();
-
- Gdx.input.setInputProcessor(getMultiplexer(this));
- this.paused = false;
+ this.camera = new OrthographicCamera(bg.getWidth() * WORLD_RATIO, bg.getHeight() * WORLD_RATIO);
+ this.camera.position.set(bg.getWidth() / 2f, bg.getHeight() / 2f, 0);
+ this.camera.update();
}
- @Override public void render(float delta)
+ @Override protected void draw(SpriteBatch batch)
{
- if (paused) return;
-
- Gdx.gl.glClearColor(1, 1, 1, 1);
- Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
-
- cam.update();
- batch.setProjectionMatrix(cam.combined);
- batch.begin();
batch.draw(bg, 0, 0);
drawCorners(batch);
root.draw(batch);
- batch.end();
}
private void drawCorners(SpriteBatch batch)
{
- float right = root.getX() + root.getWidth() - corner.getWidth();
- float top = root.getY() + root.getHeight() - corner.getHeight();
+ float right = root.getInnerX() + root.getInnerWidth() - corner.getWidth();
+ float top = root.getInnerY() + root.getInnerHeight() - corner.getHeight();
corner.setRotation(0);
- corner.setPosition(root.getX(), top);
+ corner.setPosition(root.getInnerX(), top);
corner.draw(batch);
corner.setRotation(90);
- corner.setPosition(root.getX(), root.getY());
+ corner.setPosition(root.getInnerX(), root.getInnerY());
corner.draw(batch);
corner.setRotation(180);
- corner.setPosition(right, root.getY());
+ corner.setPosition(right, root.getInnerY());
corner.draw(batch);
corner.setPosition(right, top);
corner.setRotation(270);
corner.draw(batch);
}
- @Override public void resize(int width, int height)
- {
- GdxBoardTest.debug(DOM, String.format("resize (%d,%d)",width, height));
- if (width >= height) {
- cam.viewportWidth = bg.getWidth();
- cam.viewportHeight = bg.getHeight() / (float)width * (float)height;
- } else {
- cam.viewportHeight = bg.getHeight();
- cam.viewportWidth = bg.getWidth() / (float)height * (float)width;
- }
- cam.viewportWidth *= WORLD_RATIO;
- cam.viewportHeight *= WORLD_RATIO;
- cam.update();
- root.resize(
- cam.position.x - (cam.viewportWidth / 2f) + PADDING,
- cam.position.y - (cam.viewportHeight / 2f) + PADDING,
- cam.viewportWidth - 2 * PADDING,
- cam.viewportHeight - 2 * PADDING
- );
- }
-
- @Override public void dispose()
- {
- GdxBoardTest.debug(DOM, "dispose()");
- batch.dispose();
- }
-
- @Override public void show()
- {
- GdxBoardTest.debug(DOM, "show()");
- paused = false;
- }
-
- @Override public void hide()
+ @Override protected void onZoom(float dz) { }
+ @Override protected void onDragged(int dx, int dy) { }
+ @Override protected void onTouch(int x, int y)
{
- GdxBoardTest.debug(DOM, "hide()");
- paused = true;
- }
-
- @Override public void pause()
- {
- GdxBoardTest.debug(DOM, "pause() ");
- paused = true;
- }
-
- @Override public void resume()
- {
- GdxBoardTest.debug(DOM, "resume() ");
- resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
- paused = false;
- }
-
- private InputMultiplexer getMultiplexer(final MenuScreen screen)
- {
- final InputMultiplexer multiplexer = new InputMultiplexer();
- multiplexer.addProcessor(new InputAdapter() {
- @Override public boolean touchDown(int x, int y, int pointer, int button)
- {
- if (button == Input.Buttons.LEFT) {
- touch.set(x, y, 0);
- cam.unproject(touch);
- if (root.touch(touch.x, touch.y)) {
- switch(menu.touched()) {
- case 0:
- app.switchToUi();
- break;
- case 1:
- app.switchToBoard();
- break;
- case 2:
- app.switchToExit();
- break;
- }
- }
- }
- return true;
+ hudTouch.set(x, y, 0);
+ camera.unproject(hudTouch);
+ if (root.touch(hudTouch.x, hudTouch.y)) {
+ switch(menu.touched()) {
+ case 0:
+ app.switchToUi();
+ break;
+ case 1:
+ app.switchToBoard();
+ break;
+ case 2:
+ app.switchToExit();
+ break;
}
- });
-
- return multiplexer;
+ }
}
}
diff --git a/test/src/ch/asynk/gdx/tabletop/test/UiScreen.java b/test/src/ch/asynk/gdx/tabletop/test/UiScreen.java
index 87eb220..261d461 100644
--- a/test/src/ch/asynk/gdx/tabletop/test/UiScreen.java
+++ b/test/src/ch/asynk/gdx/tabletop/test/UiScreen.java
@@ -1,39 +1,21 @@
package ch.asynk.gdx.tabletop.test;
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Screen;
-import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.NinePatch;
-import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.OrthographicCamera;
-import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.InputAdapter;
-import com.badlogic.gdx.InputMultiplexer;
-import com.badlogic.gdx.math.Vector3;
import ch.asynk.gdx.tabletop.ui.Alignment;
import ch.asynk.gdx.tabletop.ui.Button;
-import ch.asynk.gdx.tabletop.ui.Root;
-public class UiScreen implements Screen
+public class UiScreen extends AbstractScreen
{
- private static final String DOM = "UiScreen";
+ private Button hello;
- private final GdxBoardTest app;
- private final OrthographicCamera cam;
- private final SpriteBatch batch;
- private final Texture bg;
- private final Root root;
- private final Button hello;
- private boolean paused;
-
- private final float WORLD_RATIO = 0.5f;
- private final float PADDING = 15f;
-
- private final Vector3 touch = new Vector3();
+ public UiScreen(final GdxBoardTest app)
+ {
+ super(app, "UiScreen");
+ }
public enum State
{
@@ -50,44 +32,31 @@ public class UiScreen implements Screen
}
private State state;
- public UiScreen(final GdxBoardTest app)
+ @Override protected void feed()
{
- this.app = app;
- this.batch = new SpriteBatch();
- this.bg = app.assets.getTexture(app.assets.MAP_00);
-
final NinePatch patch = app.assets.getNinePatch(app.assets.PATCH, 23, 23, 23 ,23);
final BitmapFont font = app.assets.getFont(app.assets.FONT_25);
- this.root = new Root(1);
this.hello = new Button(font, patch, 10, 15);
this.hello.write("Hello");
this.root.add(this.hello);
- this.cam = new OrthographicCamera(bg.getWidth() * WORLD_RATIO, bg.getHeight() * WORLD_RATIO);
- this.cam.position.set(bg.getWidth() / 2f, bg.getHeight() / 2f, 0);
- this.cam.update();
-
- Gdx.input.setInputProcessor(getMultiplexer());
- this.paused = false;
+ this.camera = new OrthographicCamera(bg.getWidth() * WORLD_RATIO, bg.getHeight() * WORLD_RATIO);
+ this.camera.position.set(bg.getWidth() / 2f, bg.getHeight() / 2f, 0);
+ this.camera.update();
setState(State.POSITIONS);
}
- @Override public void render(float delta)
+ private void setState(State state)
{
- if (paused) return;
-
- Gdx.gl.glClearColor(1, 1, 1, 1);
- Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
-
- cam.update();
- batch.setProjectionMatrix(cam.combined);
- batch.begin();
- draw(batch);
- batch.end();
+ switch (state) {
+ case DONE:
+ app.switchToMenu();
+ }
+ this.state = state;
}
- private void draw(Batch batch)
+ @Override protected void draw(SpriteBatch batch)
{
batch.draw(bg, 0, 0);
switch (state) {
@@ -97,7 +66,7 @@ public class UiScreen implements Screen
}
}
- private void drawButtons(Batch batch)
+ private void drawButtons(SpriteBatch batch)
{
hello.write("hello");
hello.setAlignment(Alignment.TOP_LEFT);
@@ -114,96 +83,21 @@ public class UiScreen implements Screen
drawHello(batch, Alignment.MIDDLE_CENTER, Alignment.MIDDLE_CENTER);
}
- private void drawHello(Batch batch, Alignment alignment1, Alignment alignment2)
+ private void drawHello(SpriteBatch batch, Alignment alignment1, Alignment alignment2)
{
hello.setAlignment(alignment1);
hello.setLabelAlignment(alignment2);
hello.draw(batch);
}
- @Override public void resize(int width, int height)
- {
- GdxBoardTest.debug(DOM, String.format("resize (%d,%d)",width, height));
- if (width >= height) {
- cam.viewportWidth = bg.getWidth();
- cam.viewportHeight = bg.getHeight() / (float)width * (float)height;
- } else {
- cam.viewportHeight = bg.getHeight();
- cam.viewportWidth = bg.getWidth() / (float)height * (float)width;
- }
- cam.viewportWidth *= WORLD_RATIO;
- cam.viewportHeight *= WORLD_RATIO;
- cam.update();
- root.resize(
- cam.position.x - (cam.viewportWidth / 2f) + PADDING,
- cam.position.y - (cam.viewportHeight / 2f) + PADDING,
- cam.viewportWidth - 2 * PADDING,
- cam.viewportHeight - 2 * PADDING
- );
- }
-
- @Override public void dispose()
- {
- GdxBoardTest.debug(DOM, "dispose()");
- batch.dispose();
- }
-
- @Override public void show()
+ @Override protected void onZoom(float dz) { }
+ @Override protected void onDragged(int dx, int dy) { }
+ @Override protected void onTouch(int x, int y)
{
- GdxBoardTest.debug(DOM, "show()");
- paused = false;
- }
-
- @Override public void hide()
- {
- GdxBoardTest.debug(DOM, "hide()");
- paused = true;
- }
-
- @Override public void pause()
- {
- GdxBoardTest.debug(DOM, "pause() ");
- paused = true;
- }
-
- @Override public void resume()
- {
- GdxBoardTest.debug(DOM, "resume() ");
- resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
- paused = false;
- }
-
- private void touch()
- {
- if (root.touch(touch.x, touch.y)) {
+ hudTouch.set(x, y, 0);
+ camera.unproject(hudTouch);
+ if (root.touch(hudTouch.x, hudTouch.y)) {
setState(state.next());
}
}
-
- private InputMultiplexer getMultiplexer()
- {
- final InputMultiplexer multiplexer = new InputMultiplexer();
- multiplexer.addProcessor(new InputAdapter() {
- @Override public boolean touchDown(int x, int y, int pointer, int button)
- {
- if (button == Input.Buttons.LEFT) {
- touch.set(x, y, 0);
- cam.unproject(touch);
- touch();
- }
- return true;
- }
- });
-
- return multiplexer;
- }
-
- private void setState(State state)
- {
- switch (state) {
- case DONE:
- app.switchToMenu();
- }
- this.state = state;
- }
}