From c5baa5d4a12b4b5e65aa8514a2eb785d9ca398c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Mon, 5 Jan 2015 11:01:23 +0100 Subject: MenuBgCamera -> MenuCamera manage ui too --- .../ch/asynk/tankontank/screens/MenuBgCamera.java | 46 -------------- .../ch/asynk/tankontank/screens/MenuCamera.java | 71 ++++++++++++++++++++++ .../ch/asynk/tankontank/screens/MenuScreen.java | 20 +++--- 3 files changed, 79 insertions(+), 58 deletions(-) delete mode 100644 core/src/ch/asynk/tankontank/screens/MenuBgCamera.java create mode 100644 core/src/ch/asynk/tankontank/screens/MenuCamera.java diff --git a/core/src/ch/asynk/tankontank/screens/MenuBgCamera.java b/core/src/ch/asynk/tankontank/screens/MenuBgCamera.java deleted file mode 100644 index 200e5ed..0000000 --- a/core/src/ch/asynk/tankontank/screens/MenuBgCamera.java +++ /dev/null @@ -1,46 +0,0 @@ -package ch.asynk.tankontank.screens; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.OrthographicCamera; -import com.badlogic.gdx.math.Rectangle; - -public class MenuBgCamera extends OrthographicCamera -{ - private static final float ZEROF = 0.01f; - - private float virtualAspect; - private final Rectangle virtual; - private final Rectangle screen; - - public MenuBgCamera(int cx, int cy, int width, int height) - { - super(width, height); - this.virtual = new Rectangle(); - this.virtual.set(cx, cy, width, height); - this.virtualAspect = (virtual.width / virtual.height); - this.screen = new Rectangle(); - this.screen.set(0, 0, 0, 0); - this.position.set(virtual.x, virtual.y, 0f); - } - - public void updateViewport(int screenWidth, int screenHeight) - { - float aspect = (screenWidth / (float) screenHeight); - float diff = (virtualAspect - aspect); - - if (diff < -ZEROF) { - viewportWidth = (virtual.height * aspect); - viewportHeight = virtual.height; - } else if (diff > ZEROF) { - viewportWidth = virtual.width; - viewportHeight = (virtual.width / aspect); - } - - screen.width= screenWidth; - screen.height= screenHeight; - - Gdx.gl.glViewport((int)screen.x, (int)screen.y, (int)screen.width, (int)screen.height); - - update(true); - } -} diff --git a/core/src/ch/asynk/tankontank/screens/MenuCamera.java b/core/src/ch/asynk/tankontank/screens/MenuCamera.java new file mode 100644 index 0000000..21f5a48 --- /dev/null +++ b/core/src/ch/asynk/tankontank/screens/MenuCamera.java @@ -0,0 +1,71 @@ +package ch.asynk.tankontank.screens; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.math.Vector3; +import com.badlogic.gdx.math.Matrix4; +import com.badlogic.gdx.math.Rectangle; + +public class MenuCamera extends OrthographicCamera +{ + private static final float ZEROF = 0.01f; + + private float virtualAspect; + private final Rectangle virtual; + private final Rectangle screen; + private final OrthographicCamera uiCamera; + + public MenuCamera(int cx, int cy, int width, int height) + { + super(width, height); + this.virtual = new Rectangle(); + this.virtual.set(cx, cy, width, height); + this.virtualAspect = (virtual.width / virtual.height); + this.screen = new Rectangle(); + this.screen.set(0, 0, 0, 0); + this.position.set(virtual.x, virtual.y, 0f); + this.uiCamera = new OrthographicCamera(); + } + + public void updateViewport(int screenWidth, int screenHeight) + { + float aspect = (screenWidth / (float) screenHeight); + float diff = (virtualAspect - aspect); + + if (diff < -ZEROF) { + viewportWidth = (virtual.height * aspect); + viewportHeight = virtual.height; + } else if (diff > ZEROF) { + viewportWidth = virtual.width; + viewportHeight = (virtual.width / aspect); + } + + screen.width= screenWidth; + screen.height= screenHeight; + + Gdx.gl.glViewport((int)screen.x, (int)screen.y, (int)screen.width, (int)screen.height); + + update(true); + uiCamera.setToOrtho(false, screenWidth, screenHeight); + } + + public float getScreenWidth() + { + return screen.width; + } + + public float getScreenHeight() + { + return screen.height; + } + + public Vector3 uiUnproject(Vector3 v) + { + return uiCamera.unproject(v); + } + + public Matrix4 uiCombined() + { + return uiCamera.combined; + } +} diff --git a/core/src/ch/asynk/tankontank/screens/MenuScreen.java b/core/src/ch/asynk/tankontank/screens/MenuScreen.java index 94eb700..9c2febd 100644 --- a/core/src/ch/asynk/tankontank/screens/MenuScreen.java +++ b/core/src/ch/asynk/tankontank/screens/MenuScreen.java @@ -11,7 +11,6 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.utils.viewport.ScreenViewport; import ch.asynk.tankontank.TankOnTank; import ch.asynk.tankontank.ui.Position; @@ -56,8 +55,7 @@ public class MenuScreen implements Screen private ScenariosMenu scenariosMenu; private TutorialsMenu tutorialsMenu; - private final MenuBgCamera bgCamera; - private final ScreenViewport screenViewport; + private final MenuCamera camera; private final SpriteBatch batch; private Vector3 touch = new Vector3(); @@ -69,8 +67,7 @@ public class MenuScreen implements Screen float width = Gdx.graphics.getWidth(); float height = Gdx.graphics.getHeight(); - this.bgCamera = new MenuBgCamera(V_CENTER_X, V_CENTER_Y, V_WIDTH, V_HEIGHT); - this.screenViewport = new ScreenViewport(); + this.camera = new MenuCamera(V_CENTER_X, V_CENTER_Y, V_WIDTH, V_HEIGHT); this.gameAssetsLoading = false; @@ -97,7 +94,7 @@ public class MenuScreen implements Screen public boolean touchDown(int x, int y, int pointer, int button) { touch.set(x, y, 0f); - screenViewport.getCamera().unproject(touch); + camera.uiUnproject(touch); return hit(touch.x, touch.y); } }); @@ -176,7 +173,7 @@ public class MenuScreen implements Screen Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - batch.setProjectionMatrix(bgCamera.combined); + batch.setProjectionMatrix(camera.combined); batch.begin(); batch.draw(bg, 0, 0); from.draw(batch); @@ -188,10 +185,10 @@ public class MenuScreen implements Screen drawCentered(batch, unit, (int) (x + dx), (int) (y + dy)); batch.end(); - batch.setProjectionMatrix(screenViewport.getCamera().combined); + batch.setProjectionMatrix(camera.uiCombined()); batch.begin(); - batch.draw(logo, OFFSET, (screenViewport.getScreenHeight() - logo.getRegionHeight() - OFFSET)); - batch.draw(lnl, (screenViewport.getScreenWidth() - lnl.getRegionWidth() - (2 * OFFSET)), (2 * OFFSET)); + batch.draw(logo, OFFSET, (camera.getScreenHeight() - logo.getRegionHeight() - OFFSET)); + batch.draw(lnl, (camera.getScreenWidth() - lnl.getRegionWidth() - (2 * OFFSET)), (2 * OFFSET)); mainMenu.draw(batch); optionsMenu.draw(batch); scenariosMenu.draw(batch); @@ -211,8 +208,7 @@ public class MenuScreen implements Screen private void update(int width, int height) { - bgCamera.updateViewport(width, height); - screenViewport.update(width, height, true); + camera.updateViewport(width, height); Position.update(width, height); setCenteredPosition(from, xPath[0], yPath[0]); -- cgit v1.1-2-g2b99