From 3d05ac7cd6d4437623a16a9750bf0cf6b16d224b Mon Sep 17 00:00:00 2001 From: Lance Ewing Date: Fri, 22 Mar 2024 23:05:37 +0000 Subject: [PATCH] Updated icon click testing to cater for new positions. --- .../java/com/agifans/agile/GameScreen.java | 28 +++++----- .../agile/ui/GameScreenInputProcessor.java | 54 +++++++++++++++---- 2 files changed, 59 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/com/agifans/agile/GameScreen.java b/core/src/main/java/com/agifans/agile/GameScreen.java index bbe9fde..c27d4c5 100644 --- a/core/src/main/java/com/agifans/agile/GameScreen.java +++ b/core/src/main/java/com/agifans/agile/GameScreen.java @@ -281,6 +281,7 @@ private void draw(float delta) { float topPadding = ((viewportManager.getHeight() - agiScreenHeight) / 2); cameraYOffset = (topPadding / agiHeightRatio); } + gameScreenInputProcessor.setCameraXOffset(cameraXOffset); camera.position.set((ADJUSTED_WIDTH / 2) + cameraXOffset, (ADJUSTED_HEIGHT / 2) - cameraYOffset, 0.0f); camera.update(); batch.setProjectionMatrix(camera.combined); @@ -318,23 +319,24 @@ private void draw(float delta) { batch.draw(backIcon, viewportManager.getWidth() - 116, 20); } else { // Landscape - if (cameraXOffset != 0) { - if (joystickAlignment.equals(JoystickAlignment.LEFT)) { - batch.draw(joystickIcon, 16, viewportManager.getHeight() - 324); - batch.draw(fullScreenIcon, 16, viewportManager.getHeight() - 112); - batch.draw(backIcon, 16, 16); - batch.draw(keyboardIcon, 16, 228); - } else { - batch.draw(joystickIcon, viewportManager.getWidth() - 112, viewportManager.getHeight() - 324); - batch.draw(fullScreenIcon, viewportManager.getWidth() - 112, viewportManager.getHeight() - 112); - batch.draw(backIcon, viewportManager.getWidth() - 112, 16); - batch.draw(keyboardIcon, viewportManager.getWidth() - 112, 228); - } - } else { + if (cameraXOffset == 0) { + // Middle batch.draw(joystickIcon, 16, viewportManager.getHeight() - 112); batch.draw(fullScreenIcon, viewportManager.getWidth() - 112, viewportManager.getHeight() - 112); batch.draw(backIcon, viewportManager.getWidth() - 112, 16); batch.draw(keyboardIcon, 16, 0); + } else if (cameraXOffset < 0) { + // Left + batch.draw(joystickIcon, 16, viewportManager.getHeight() - 324); + batch.draw(fullScreenIcon, 16, viewportManager.getHeight() - 112); + batch.draw(backIcon, 16, 16); + batch.draw(keyboardIcon, 16, 228); + } else if (cameraXOffset > 0) { + // Right + batch.draw(joystickIcon, viewportManager.getWidth() - 112, viewportManager.getHeight() - 324); + batch.draw(fullScreenIcon, viewportManager.getWidth() - 112, viewportManager.getHeight() - 112); + batch.draw(backIcon, viewportManager.getWidth() - 112, 16); + batch.draw(keyboardIcon, viewportManager.getWidth() - 112, 228); } } diff --git a/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java b/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java index 2c20078..c0074ea 100644 --- a/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java +++ b/core/src/main/java/com/agifans/agile/ui/GameScreenInputProcessor.java @@ -31,6 +31,11 @@ public class GameScreenInputProcessor extends InputAdapter { */ private JoystickAlignment joystickAlignment = JoystickAlignment.OFF; + /** + * The current offset from centre of the camera in the X direction. + */ + private float cameraXOffset; + /** * Invoked by AGILE whenever it would like to show a dialog, such as when it * needs the user to confirm an action, or to choose a file. @@ -334,17 +339,37 @@ public boolean touchUp(int screenX, int screenY, int pointer, int button) { } else { // Landscape. int screenTop = (int) viewportManager.getHeight(); - if (touchXY.y > (screenTop - 104)) { - if (touchXY.x < 112) { - joystickClicked = true; - } else if (touchXY.x > (viewportManager.getWidth() - 112)) { - fullScreenClicked = true; + if (cameraXOffset == 0) { + // Screen in middle. + if (touchXY.y > (screenTop - 104)) { + if (touchXY.x < 112) { + joystickClicked = true; + } else if (touchXY.x > (viewportManager.getWidth() - 112)) { + fullScreenClicked = true; + } + } else if (touchXY.y < 104) { + if (touchXY.x > (viewportManager.getWidth() - 112)) { + backArrowClicked = true; + } else if (touchXY.x < 112) { + keyboardClicked = true; + } } - } else if (touchXY.y < 104) { - if (touchXY.x > (viewportManager.getWidth() - 112)) { - backArrowClicked = true; - } else if (touchXY.x < 112) { - keyboardClicked = true; + } + else { + // All buttons on same side + if ((touchXY.x < 128) || (touchXY.x > (viewportManager.getWidth() - 128))) { + if (touchXY.y > (screenTop - 128)) { + fullScreenClicked = true; + } + else if ((touchXY.y < (screenTop - 212)) && (touchXY.y > (screenTop - 340))) { + joystickClicked = true; + } + else if ((touchXY.y > 212) && (touchXY.y < 340)) { + keyboardClicked = true; + } + else if ((touchXY.y > 0) && (touchXY.y < 128)) { + backArrowClicked = true; + } } } } @@ -523,4 +548,13 @@ JoystickAlignment rotateValue() { return values()[(ordinal() + 1) % 4]; } } + + /** + * Sets the current offset from centre of the camera in the X direction. + * + * @param cameraXOffset The current offset from centre of the camera in the X direction. + */ + public void setCameraXOffset(float cameraXOffset) { + this.cameraXOffset = cameraXOffset; + } }