summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorzackhow <zackhow@gmail.com>2018-08-15 21:11:49 -0400
committerzackhow <zackhow@gmail.com>2018-08-15 21:13:11 -0400
commit4c281f72b64a29d27732f84c2b729749fcaa78b5 (patch)
tree103505b50d52b92fb5c1edf6f8e394e6bcd80167 /Source/Android/app/src/main/java
parent8e5c3d5b4eff43b9e830831efc91dccf77f00b66 (diff)
Android: Enhance Dpad movements/touches
Allows you to 'slide' your finger to move across the dpad like a joystick.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java40
1 files changed, 18 insertions, 22 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java
index f49e046fdd..4c3b92aec9 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java
@@ -163,35 +163,31 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
+ case MotionEvent.ACTION_MOVE:
+ // Up, Down, Left, Right
+ boolean[] pressed = {false, false, false, false};
// If a pointer enters the bounds of a button, press that button.
if (dpad.getBounds().contains((int)event.getX(pointerIndex), (int)event.getY(pointerIndex)))
{
- boolean up = false;
- boolean down = false;
- boolean left = false;
- boolean right = false;
if (dpad.getBounds().top + (dpad.getHeight() / 3) > (int)event.getY(pointerIndex))
- {
- NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(0), ButtonState.PRESSED);
- up = true;
- }
+ pressed[0] = true;
if (dpad.getBounds().bottom - (dpad.getHeight() / 3) < (int)event.getY(pointerIndex))
- {
- NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(1), ButtonState.PRESSED);
- down = true;
- }
+ pressed[1] = true;
if (dpad.getBounds().left + (dpad.getWidth() / 3) > (int)event.getX(pointerIndex))
- {
- NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(2), ButtonState.PRESSED);
- left = true;
- }
+ pressed[2] = true;
if (dpad.getBounds().right - (dpad.getWidth() / 3) < (int)event.getX(pointerIndex))
- {
- NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(3), ButtonState.PRESSED);
- right = true;
- }
-
- setDpadState(dpad, up, down, left, right);
+ pressed[3] = true;
+
+ // Release the buttons first, then press
+ for(int i = 0; i < pressed.length; i++)
+ if (!pressed[i])
+ NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(i), ButtonState.RELEASED);
+ // Press buttons
+ for(int i = 0; i < pressed.length; i++)
+ if (pressed[i])
+ NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, dpad.getId(i), ButtonState.PRESSED);
+
+ setDpadState(dpad, pressed[0], pressed[1], pressed[2], pressed[3]);
dpad.setTrackId(event.getPointerId(pointerIndex));
}
break;