summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2022-04-18 17:17:48 +0200
committerJosJuice <josjuice@gmail.com>2023-03-03 22:28:24 +0100
commit0dd8bbbbbb91f701f284561f244fa4e6f29b5f61 (patch)
treeb4b362105770a57c4f0a6bae8bf450be448472ca /Source/Android/app/src/main/java/org
parent1c26a85e35f94169ddc83e8174d6824aec82d322 (diff)
Android: Add extension selection
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/InputMappingIntSetting.java48
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java23
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/NumericSetting.java15
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java10
4 files changed, 96 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/InputMappingIntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/InputMappingIntSetting.java
new file mode 100644
index 0000000000..989f2b7cde
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/InputMappingIntSetting.java
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.input.model;
+
+import org.dolphinemu.dolphinemu.features.input.model.controlleremu.NumericSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.AbstractIntSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+
+public class InputMappingIntSetting implements AbstractIntSetting
+{
+ private final NumericSetting mNumericSetting;
+
+ public InputMappingIntSetting(NumericSetting numericSetting)
+ {
+ mNumericSetting = numericSetting;
+ }
+
+ @Override
+ public int getInt(Settings settings)
+ {
+ return mNumericSetting.getIntValue();
+ }
+
+ @Override
+ public void setInt(Settings settings, int newValue)
+ {
+ mNumericSetting.setIntValue(newValue);
+ }
+
+ @Override
+ public boolean isOverridden(Settings settings)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isRuntimeEditable()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean delete(Settings settings)
+ {
+ mNumericSetting.setIntValue(mNumericSetting.getIntDefaultValue());
+ return true;
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
index 19423d5f14..0a7681af6d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/ControlGroup.java
@@ -12,6 +12,21 @@ import androidx.annotation.Keep;
*/
public class ControlGroup
{
+ public static final int TYPE_OTHER = 0;
+ public static final int TYPE_STICK = 1;
+ public static final int TYPE_MIXED_TRIGGERS = 2;
+ public static final int TYPE_BUTTONS = 3;
+ public static final int TYPE_FORCE = 4;
+ public static final int TYPE_ATTACHMENTS = 5;
+ public static final int TYPE_TILT = 6;
+ public static final int TYPE_CURSOR = 7;
+ public static final int TYPE_TRIGGERS = 8;
+ public static final int TYPE_SLIDER = 9;
+ public static final int TYPE_SHAKE = 10;
+ public static final int TYPE_IMU_ACCELEROMETER = 11;
+ public static final int TYPE_IMU_GYROSCOPE = 12;
+ public static final int TYPE_IMU_CURSOR = 13;
+
@Keep
private final long mPointer;
@@ -23,6 +38,8 @@ public class ControlGroup
public native String getUiName();
+ public native int getGroupType();
+
public native int getControlCount();
public native Control getControl(int i);
@@ -30,4 +47,10 @@ public class ControlGroup
public native int getNumericSettingCount();
public native NumericSetting getNumericSetting(int i);
+
+ /**
+ * If getGroupType returns TYPE_ATTACHMENTS, this returns the attachment selection setting.
+ * Otherwise, undefined behavior!
+ */
+ public native NumericSetting getAttachmentSetting();
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/NumericSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/NumericSetting.java
index 9baa2c41d7..bcb9dce181 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/NumericSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/NumericSetting.java
@@ -48,6 +48,21 @@ public class NumericSetting
public native ControlReference getControlReference();
/**
+ * If the type is TYPE_INT, gets the current value. Otherwise, undefined behavior!
+ */
+ public native int getIntValue();
+
+ /**
+ * If the type is TYPE_INT, sets the current value. Otherwise, undefined behavior!
+ */
+ public native void setIntValue(int value);
+
+ /**
+ * If the type is TYPE_INT, gets the default value. Otherwise, undefined behavior!
+ */
+ public native int getIntDefaultValue();
+
+ /**
* If the type is TYPE_DOUBLE, gets the current value. Otherwise, undefined behavior!
*/
public native double getDoubleValue();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 775c9b3f8a..fded8e56de 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -16,6 +16,7 @@ import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.UserDataActivity;
import org.dolphinemu.dolphinemu.features.input.model.InputMappingBooleanSetting;
import org.dolphinemu.dolphinemu.features.input.model.InputMappingDoubleSetting;
+import org.dolphinemu.dolphinemu.features.input.model.InputMappingIntSetting;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.ControlGroup;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.EmulatedController;
import org.dolphinemu.dolphinemu.features.input.model.controlleremu.NumericSetting;
@@ -1117,6 +1118,15 @@ public final class SettingsFragmentPresenter
sl.add(new InputMappingControlSetting(group.getControl(j), controller));
}
+ if (group.getGroupType() == ControlGroup.TYPE_ATTACHMENTS)
+ {
+ NumericSetting attachmentSetting = group.getAttachmentSetting();
+ sl.add(new SingleChoiceSetting(mContext, new InputMappingIntSetting(attachmentSetting),
+ R.string.wiimote_extensions, 0, R.array.wiimoteExtensionsEntries,
+ R.array.wiimoteExtensionsValues,
+ MenuTag.getWiimoteExtensionMenuTag(mControllerNumber)));
+ }
+
int numericSettingCount = group.getNumericSettingCount();
for (int j = 0; j < numericSettingCount; j++)
{