summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2018-07-11 08:41:06 +0200
committerGitHub <noreply@github.com>2018-07-11 08:41:06 +0200
commitd819df1d081c8016aaddd3548b8857166f9c777a (patch)
treecdd903c18f058affd4eca058d63e5ee98446650b /Source/Android/app/src/main/java
parentbf4341f7623ab44743315f0c346ebfc8a9e8e960 (diff)
parent82ec3c929c4ef4ccaca5e587808bbfc9ed5f6098 (diff)
Merge pull request #7186 from gwicks/androidTouchJoystickRelCenter
Android: Make touch joystick re-centering configurable
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java34
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java13
3 files changed, 45 insertions, 4 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index 4a02cfc89c..8ecb545298 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -120,6 +120,7 @@ public final class EmulationActivity extends AppCompatActivity
public static final int MENU_ACTION_LOAD_SLOT6 = 21;
public static final int MENU_ACTION_EXIT = 22;
public static final int MENU_ACTION_CHANGE_DISC = 23;
+ public static final int MENU_ACTION_JOYSTICK_REL_CENTER = 24;
private static SparseIntArray buttonsActionsMap = new SparseIntArray();
@@ -147,6 +148,7 @@ public final class EmulationActivity extends AppCompatActivity
buttonsActionsMap.append(R.id.menu_emulation_load_5, EmulationActivity.MENU_ACTION_LOAD_SLOT5);
buttonsActionsMap.append(R.id.menu_change_disc, EmulationActivity.MENU_ACTION_CHANGE_DISC);
buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT);
+ buttonsActionsMap.append(R.id.menu_emulation_joystick_rel_center, EmulationActivity.MENU_ACTION_JOYSTICK_REL_CENTER);
}
public static void launch(FragmentActivity activity, GameFile gameFile, int position, View sharedView)
@@ -431,6 +433,10 @@ public final class EmulationActivity extends AppCompatActivity
{
getMenuInflater().inflate(R.menu.menu_emulation_wii, menu);
}
+
+ // Populate the checkbox value for joystick center on touch
+ menu.findItem(R.id.menu_emulation_joystick_rel_center).setChecked(mPreferences.getBoolean("joystickRelCenter", true));
+
return true;
}
@@ -441,11 +447,30 @@ public final class EmulationActivity extends AppCompatActivity
int action = buttonsActionsMap.get(item.getItemId(), -1);
if (action >= 0)
{
- handleMenuAction(action);
+ if (item.isCheckable())
+ {
+ // Need to pass a reference to the item to set the checkbox state, since it is not done automatically
+ handleCheckableMenuAction(action, item);
+ }
+ else
+ {
+ handleMenuAction(action);
+ }
}
return true;
}
+ public void handleCheckableMenuAction(@MenuAction int menuAction, MenuItem item)
+ {
+ switch (menuAction)
+ {
+ case MENU_ACTION_JOYSTICK_REL_CENTER:
+ item.setChecked(!item.isChecked());
+ toggleJoystickRelCenter(item.isChecked());
+ return;
+ }
+ }
+
public void handleMenuAction(@MenuAction int menuAction)
{
switch (menuAction)
@@ -565,6 +590,13 @@ public final class EmulationActivity extends AppCompatActivity
}
}
+ private void toggleJoystickRelCenter(boolean state)
+ {
+ final SharedPreferences.Editor editor = mPreferences.edit();
+ editor.putBoolean("joystickRelCenter", state);
+ editor.commit();
+ }
+
private void editControlsPlacement()
{
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 1957ff7f67..d3726bf88f 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
@@ -829,7 +829,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
final InputOverlayDrawableJoystick overlayDrawable
= new InputOverlayDrawableJoystick(res, bitmapOuter,
bitmapInnerDefault, bitmapInnerPressed,
- outerRect, innerRect, joystick);
+ outerRect, innerRect, joystick, sPrefs);
// Need to set the image's position
overlayDrawable.setPosition(drawableX, drawableY);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java
index 1c94b44135..8083b0d2ee 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayDrawableJoystick.java
@@ -6,6 +6,8 @@
package org.dolphinemu.dolphinemu.overlay;
+import android.content.Context;
+import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -19,6 +21,8 @@ import android.view.MotionEvent;
*/
public final class InputOverlayDrawableJoystick
{
+ private SharedPreferences mPreferences;
+
private final int[] axisIDs = {0, 0, 0, 0};
private final float[] axises = {0f, 0f};
private int trackId = -1;
@@ -48,7 +52,7 @@ public final class InputOverlayDrawableJoystick
*/
public InputOverlayDrawableJoystick(Resources res, Bitmap bitmapOuter,
Bitmap bitmapInnerDefault, Bitmap bitmapInnerPressed,
- Rect rectOuter, Rect rectInner, int joystick)
+ Rect rectOuter, Rect rectInner, int joystick, SharedPreferences prefsHandle)
{
axisIDs[0] = joystick + 1;
axisIDs[1] = joystick + 2;
@@ -56,6 +60,7 @@ public final class InputOverlayDrawableJoystick
axisIDs[3] = joystick + 4;
mJoystickType = joystick;
+ mPreferences = prefsHandle;
mOuterBitmap = new BitmapDrawable(res, bitmapOuter);
mDefaultStateInnerBitmap = new BitmapDrawable(res, bitmapInnerDefault);
mPressedStateInnerBitmap = new BitmapDrawable(res, bitmapInnerPressed);
@@ -92,6 +97,7 @@ public final class InputOverlayDrawableJoystick
public void TrackEvent(MotionEvent event)
{
+ boolean reCenter = mPreferences.getBoolean("joystickRelCenter", true);
int pointerIndex = event.getActionIndex();
switch(event.getAction() & MotionEvent.ACTION_MASK)
@@ -103,7 +109,10 @@ public final class InputOverlayDrawableJoystick
mPressedState = true;
mOuterBitmap.setAlpha(0);
mBoundsBoxBitmap.setAlpha(255);
- getVirtBounds().offset((int)event.getX(pointerIndex) - getVirtBounds().centerX(), (int)event.getY(pointerIndex) - getVirtBounds().centerY());
+ if (reCenter)
+ {
+ getVirtBounds().offset((int)event.getX(pointerIndex) - getVirtBounds().centerX(), (int)event.getY(pointerIndex) - getVirtBounds().centerY());
+ }
mBoundsBoxBitmap.setBounds(getVirtBounds());
trackId = event.getPointerId(pointerIndex);
}