From 90946e69eea758e4c80da41ad7ec74ebf64dd3dd Mon Sep 17 00:00:00 2001 From: Nathan Watson Date: Sat, 11 Jul 2020 16:00:44 -0700 Subject: [PATCH] When dpad is active (both visible and not minimized), prevent normal touch-based movement. --- .../gpl/rpg/AndorsTrail/controller/InputController.java | 8 +++++++- .../src/com/gpl/rpg/AndorsTrail/view/VirtualDpadView.java | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/InputController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/InputController.java index 02a3f3431..a55968b7e 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/InputController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/InputController.java @@ -17,6 +17,7 @@ public final class InputController implements OnClickListener, OnLongClickListen private int lastTouchPosition_dx = 0; private int lastTouchPosition_dy = 0; private long lastTouchEventTime = 0; + private boolean isDpadActive = false; public InputController(ControllerContext controllers, WorldContext world) { this.controllers = controllers; @@ -49,6 +50,7 @@ public final class InputController implements OnClickListener, OnLongClickListen return false; } } + public void onRelativeMovement(int dx, int dy) { if (!allowInputInterval()) return; if (world.model.uiSelections.isInCombat) { @@ -89,6 +91,10 @@ public final class InputController implements OnClickListener, OnLongClickListen return true; } + public void setDpadActive(boolean isDpadActive) { + this.isDpadActive = isDpadActive; + } + public void onTouchCancel() { controllers.movementController.stopMovement(); } @@ -98,7 +104,7 @@ public final class InputController implements OnClickListener, OnLongClickListen lastTouchPosition_dx = tile_x - world.model.player.position.x; lastTouchPosition_dy = tile_y - world.model.player.position.y; - if (world.model.uiSelections.isInCombat) return false; + if (world.model.uiSelections.isInCombat || isDpadActive) return false; controllers.movementController.startMovement(lastTouchPosition_dx, lastTouchPosition_dy, lastTouchPosition_tileCoords); return true; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/VirtualDpadView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/VirtualDpadView.java index 5155e5127..405ebdefb 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/VirtualDpadView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/VirtualDpadView.java @@ -98,10 +98,12 @@ public final class VirtualDpadView extends ImageView implements OnClickListener int dpadPosition = preferences.dpadPosition; if (dpadPosition == AndorsTrailPreferences.DPAD_POSITION_DISABLED) { setVisibility(View.GONE); + this.inputController.setDpadActive(false); return; } setVisibility(View.VISIBLE); + this.inputController.setDpadActive(!isMinimized); isMinimizeable = preferences.dpadMinimizeable; RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); @@ -156,6 +158,7 @@ public final class VirtualDpadView extends ImageView implements OnClickListener setMaxWidth(one_third_width); setMaxHeight(one_third_height); } + this.inputController.setDpadActive(!isMinimized); this.requestLayout(); } }