diff options
Diffstat (limited to 'Source/Android')
7 files changed, 141 insertions, 8 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++) { diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 4e27b8ade3..5afaf8ba2c 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -210,14 +210,14 @@ <item>@string/extension_drums</item> <item>@string/extension_turntable</item> </string-array> - <string-array name="wiimoteExtensionsValues"> - <item>None</item> - <item>Nunchuk</item> - <item>Classic</item> - <item>Guitar</item> - <item>Drums</item> - <item>Turntable</item> - </string-array> + <integer-array name="wiimoteExtensionsValues"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + <item>5</item> + </integer-array> <!-- Texture Cache Accuracy Preference --> <string-array name="textureCacheAccuracyEntries"> diff --git a/Source/Android/jni/Input/ControlGroup.cpp b/Source/Android/jni/Input/ControlGroup.cpp index 01405a0e8b..0b69145b36 100644 --- a/Source/Android/jni/Input/ControlGroup.cpp +++ b/Source/Android/jni/Input/ControlGroup.cpp @@ -6,6 +6,7 @@ #include <jni.h> #include "Common/MsgHandler.h" +#include "InputCommon/ControllerEmu/ControlGroup/Attachments.h" #include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h" #include "jni/AndroidCommon/AndroidCommon.h" #include "jni/AndroidCommon/IDCache.h" @@ -37,6 +38,13 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_g } JNIEXPORT jint JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getGroupType( + JNIEnv* env, jobject obj) +{ + return static_cast<jint>(GetPointer(env, obj)->type); +} + +JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getControlCount( JNIEnv* env, jobject obj) { @@ -63,4 +71,12 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_g { return NumericSettingToJava(env, GetPointer(env, obj)->numeric_settings[i].get()); } + +JNIEXPORT jobject JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getAttachmentSetting( + JNIEnv* env, jobject obj) +{ + auto* group = reinterpret_cast<ControllerEmu::Attachments*>(GetPointer(env, obj)); + return NumericSettingToJava(env, &group->GetSelectionSetting()); +} } diff --git a/Source/Android/jni/Input/NumericSetting.cpp b/Source/Android/jni/Input/NumericSetting.cpp index 32805d15f8..1625d172ae 100644 --- a/Source/Android/jni/Input/NumericSetting.cpp +++ b/Source/Android/jni/Input/NumericSetting.cpp @@ -81,6 +81,27 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_NumericSetting return ControlReferenceToJava(env, &GetPointer(env, obj)->GetInputReference()); } +JNIEXPORT jint JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_NumericSetting_getIntValue( + JNIEnv* env, jobject obj) +{ + return GetPointer<int>(env, obj)->GetValue(); +} + +JNIEXPORT void JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_NumericSetting_setIntValue( + JNIEnv* env, jobject obj, jint value) +{ + GetPointer<int>(env, obj)->SetValue(value); +} + +JNIEXPORT jint JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_NumericSetting_getIntDefaultValue( + JNIEnv* env, jobject obj) +{ + return GetPointer<int>(env, obj)->GetDefaultValue(); +} + JNIEXPORT jdouble JNICALL Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_NumericSetting_getDoubleValue( JNIEnv* env, jobject obj) |
