summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorlynxnb <niccolo.betto@gmail.com>2022-01-16 01:17:23 +0100
committerlynxnb <niccolo.betto@gmail.com>2022-01-24 12:03:51 +0100
commitb4edd16f245f9e977dc13854977d7ea8fe8197b0 (patch)
tree26980f91aa994c90747a46f7439e2027c40e4e5a /Source/Android/app/src/main/java
parentfe9ac4ed1d6efce98e87a9bd31e992e41f4c8785 (diff)
Android: add an option to recenter IR after every pointer interaction
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java41
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlay.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java16
4 files changed, 50 insertions, 13 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 1fa13ef399..1f00b11d85 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
@@ -98,9 +98,10 @@ public final class EmulationActivity extends AppCompatActivity
MENU_ACTION_SAVE_SLOT6, MENU_ACTION_LOAD_SLOT1, MENU_ACTION_LOAD_SLOT2,
MENU_ACTION_LOAD_SLOT3, MENU_ACTION_LOAD_SLOT4, MENU_ACTION_LOAD_SLOT5,
MENU_ACTION_LOAD_SLOT6, MENU_ACTION_EXIT, MENU_ACTION_CHANGE_DISC,
- MENU_ACTION_RESET_OVERLAY, MENU_SET_IR_MODE, MENU_SET_IR_SENSITIVITY,
- MENU_ACTION_CHOOSE_DOUBLETAP, MENU_ACTION_MOTION_CONTROLS, MENU_ACTION_PAUSE_EMULATION,
- MENU_ACTION_UNPAUSE_EMULATION, MENU_ACTION_OVERLAY_CONTROLS, MENU_ACTION_SETTINGS})
+ MENU_ACTION_RESET_OVERLAY, MENU_SET_IR_RECENTER, MENU_SET_IR_MODE,
+ MENU_SET_IR_SENSITIVITY, MENU_ACTION_CHOOSE_DOUBLETAP, MENU_ACTION_MOTION_CONTROLS,
+ MENU_ACTION_PAUSE_EMULATION, MENU_ACTION_UNPAUSE_EMULATION, MENU_ACTION_OVERLAY_CONTROLS,
+ MENU_ACTION_SETTINGS})
public @interface MenuAction
{
}
@@ -132,14 +133,15 @@ public final class EmulationActivity extends AppCompatActivity
public static final int MENU_ACTION_JOYSTICK_REL_CENTER = 24;
public static final int MENU_ACTION_RUMBLE = 25;
public static final int MENU_ACTION_RESET_OVERLAY = 26;
- public static final int MENU_SET_IR_MODE = 27;
- public static final int MENU_SET_IR_SENSITIVITY = 28;
- public static final int MENU_ACTION_CHOOSE_DOUBLETAP = 29;
- public static final int MENU_ACTION_MOTION_CONTROLS = 30;
- public static final int MENU_ACTION_PAUSE_EMULATION = 31;
- public static final int MENU_ACTION_UNPAUSE_EMULATION = 32;
- public static final int MENU_ACTION_OVERLAY_CONTROLS = 33;
- public static final int MENU_ACTION_SETTINGS = 34;
+ public static final int MENU_SET_IR_RECENTER = 27;
+ public static final int MENU_SET_IR_MODE = 28;
+ public static final int MENU_SET_IR_SENSITIVITY = 29;
+ public static final int MENU_ACTION_CHOOSE_DOUBLETAP = 30;
+ public static final int MENU_ACTION_MOTION_CONTROLS = 31;
+ public static final int MENU_ACTION_PAUSE_EMULATION = 32;
+ public static final int MENU_ACTION_UNPAUSE_EMULATION = 33;
+ public static final int MENU_ACTION_OVERLAY_CONTROLS = 34;
+ public static final int MENU_ACTION_SETTINGS = 35;
private static final SparseIntArray buttonsActionsMap = new SparseIntArray();
@@ -158,6 +160,8 @@ public final class EmulationActivity extends AppCompatActivity
buttonsActionsMap.append(R.id.menu_emulation_rumble, EmulationActivity.MENU_ACTION_RUMBLE);
buttonsActionsMap
.append(R.id.menu_emulation_reset_overlay, EmulationActivity.MENU_ACTION_RESET_OVERLAY);
+ buttonsActionsMap.append(R.id.menu_emulation_ir_recenter,
+ EmulationActivity.MENU_SET_IR_RECENTER);
buttonsActionsMap.append(R.id.menu_emulation_set_ir_mode,
EmulationActivity.MENU_SET_IR_MODE);
buttonsActionsMap.append(R.id.menu_emulation_set_ir_sensitivity,
@@ -482,6 +486,11 @@ public final class EmulationActivity extends AppCompatActivity
.setChecked(BooleanSetting.MAIN_JOYSTICK_REL_CENTER.getBoolean(mSettings));
menu.findItem(R.id.menu_emulation_rumble)
.setChecked(BooleanSetting.MAIN_PHONE_RUMBLE.getBoolean(mSettings));
+ if (wii)
+ {
+ menu.findItem(R.id.menu_emulation_ir_recenter)
+ .setChecked(BooleanSetting.MAIN_IR_ALWAYS_RECENTER.getBoolean(mSettings));
+ }
popup.setOnMenuItemClickListener(this::onOptionsItemSelected);
@@ -520,6 +529,10 @@ public final class EmulationActivity extends AppCompatActivity
item.setChecked(!item.isChecked());
toggleRumble(item.isChecked());
break;
+ case MENU_SET_IR_RECENTER:
+ item.setChecked(!item.isChecked());
+ toggleRecenter(item.isChecked());
+ break;
}
}
@@ -698,6 +711,12 @@ public final class EmulationActivity extends AppCompatActivity
Rumble.setPhoneVibrator(state, this);
}
+ private void toggleRecenter(boolean state)
+ {
+ BooleanSetting.MAIN_IR_ALWAYS_RECENTER.setBoolean(mSettings, state);
+ mEmulationFragment.refreshOverlayPointer(mSettings);
+ }
+
private void editControlsPlacement()
{
if (mEmulationFragment.isConfiguringControls())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
index 2f93288884..a7c47a03ad 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
@@ -71,6 +71,8 @@ public enum BooleanSetting implements AbstractBooleanSetting
"PhoneRumble", true),
MAIN_SHOW_INPUT_OVERLAY(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID,
"ShowInputOverlay", true),
+ MAIN_IR_ALWAYS_RECENTER(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID,
+ "IRAlwaysRecenter", false),
MAIN_BUTTON_TOGGLE_GC_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID_OVERLAY_BUTTONS,
"ButtonToggleGCButtonA", true),
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 c58207283a..c627603900 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
@@ -165,7 +165,8 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
}
overlayPointer = new InputOverlayPointer(mSurfacePosition, doubleTapButton,
- IntSetting.MAIN_IR_MODE.getIntGlobal());
+ IntSetting.MAIN_IR_MODE.getIntGlobal(),
+ BooleanSetting.MAIN_IR_ALWAYS_RECENTER.getBooleanGlobal());
}
@Override
@@ -775,6 +776,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
if (overlayPointer != null)
{
overlayPointer.setMode(IntSetting.MAIN_IR_MODE.getInt(settings));
+ overlayPointer.setRecenter(BooleanSetting.MAIN_IR_ALWAYS_RECENTER.getBoolean(settings));
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java
index 01e1e3ad57..c592dbfcd0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/overlay/InputOverlayPointer.java
@@ -33,6 +33,7 @@ public class InputOverlayPointer
private float mTouchStartY;
private int mMode;
+ private boolean mRecenter;
private boolean doubleTap = false;
private int doubleTapButton;
@@ -48,10 +49,11 @@ public class InputOverlayPointer
DOUBLE_TAP_OPTIONS.add(NativeLibrary.ButtonType.CLASSIC_BUTTON_A);
}
- public InputOverlayPointer(Rect surfacePosition, int button, int mode)
+ public InputOverlayPointer(Rect surfacePosition, int button, int mode, boolean recenter)
{
doubleTapButton = button;
mMode = mode;
+ mRecenter = recenter;
mGameCenterX = (surfacePosition.left + surfacePosition.right) / 2.0f;
mGameCenterY = (surfacePosition.top + surfacePosition.bottom) / 2.0f;
@@ -97,6 +99,8 @@ public class InputOverlayPointer
trackId = -1;
if (mMode == MODE_DRAG)
updateOldAxes();
+ if (mRecenter)
+ reset();
break;
}
@@ -143,6 +147,11 @@ public class InputOverlayPointer
oldaxes[1] = axes[1];
}
+ private void reset()
+ {
+ axes[0] = axes[1] = oldaxes[0] = oldaxes[1] = 0f;
+ }
+
public float[] getAxisValues()
{
float[] iraxes = {0f, 0f, 0f, 0f};
@@ -159,4 +168,9 @@ public class InputOverlayPointer
if (mode == MODE_DRAG)
updateOldAxes();
}
+
+ public void setRecenter(boolean recenter)
+ {
+ mRecenter = recenter;
+ }
}