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 dea72fb1a97a..5f77672c5410 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 @@ -823,7 +823,7 @@ public void chooseDoubleTapButton() if (currentController != InputOverlay.OVERLAY_WIIMOTE_CLASSIC && currentValue == InputOverlay.OVERLAY_WIIMOTE_CLASSIC) { - currentValue = InputOverlay.OVERLAY_WIIMOTE; + currentValue = InputOverlay.OVERLAY_WIIMOTE_VERTICAL; } builder.setSingleChoiceItems(buttonList, currentValue, (DialogInterface dialog, int which) -> @@ -906,7 +906,7 @@ private void chooseController() getResources().getStringArray(R.array.controllersValues)[indexSelected]); NativeLibrary.SetConfig(SettingsFile.FILE_NAME_WIIMOTE + ".ini", SettingsFile.KEY_WIIMOTE_PLAYER_1, SettingsFile.KEY_WIIMOTE_ORIENTATION, - indexSelected == InputOverlay.OVERLAY_WIIMOTE_SIDEWAYS ? "True" : "False"); + indexSelected == InputOverlay.OVERLAY_WIIMOTE_HORIZONTAL ? "1" : "0"); // Delay needed to avoid registering overlay Wii Remote as Player 2 in Super Smash // Bros. Brawl's character selection screen when switching controllers with diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java index ce7e05edc0f1..e4430dadb34e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java @@ -290,13 +290,13 @@ public void onExtensionSettingChanged(MenuTag menuTag, int value) if (NativeLibrary .GetConfig(SettingsFile.FILE_NAME_WIIMOTE + ".ini", SettingsFile.KEY_WIIMOTE_PLAYER_1, - SettingsFile.KEY_WIIMOTE_ORIENTATION, "False").equals("False")) + SettingsFile.KEY_WIIMOTE_ORIENTATION, "0").equals("1")) { - editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE); + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_HORIZONTAL); } else { - editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_SIDEWAYS); + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_VERTICAL); } break; @@ -311,12 +311,9 @@ public void onExtensionSettingChanged(MenuTag menuTag, int value) editor.commit(); } - if (value != 0) // None - { - Bundle bundle = new Bundle(); - bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value); - mView.showSettingsFragment(menuTag, bundle, true, gameId); - } + Bundle bundle = new Bundle(); + bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value); + mView.showSettingsFragment(menuTag, bundle, true, gameId); } public static void wiiOverlayDetermineExtension(Context context, String extension) @@ -329,14 +326,14 @@ public static void wiiOverlayDetermineExtension(Context context, String extensio case "None": if (NativeLibrary.GetConfig(SettingsFile.FILE_NAME_WIIMOTE + ".ini", SettingsFile.KEY_WIIMOTE_PLAYER_1, SettingsFile.KEY_WIIMOTE_ORIENTATION, - "False") - .equals("False")) + "0") + .equals("1")) { - editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE); + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_HORIZONTAL); } else { - editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_SIDEWAYS); + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_VERTICAL); } break; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java index e13eb36eb68c..e8b4276cb0ca 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java @@ -43,6 +43,7 @@ import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SliderViewHolder; import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SubmenuViewHolder; import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile; +import org.dolphinemu.dolphinemu.overlay.InputOverlay; import org.dolphinemu.dolphinemu.ui.main.MainPresenter; import org.dolphinemu.dolphinemu.utils.FileBrowserHelper; import org.dolphinemu.dolphinemu.utils.Log; @@ -374,6 +375,8 @@ public void onClick(DialogInterface dialog, int which) { if (mClickedItem instanceof SingleChoiceSetting) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); + final SharedPreferences.Editor editor = preferences.edit(); SingleChoiceSetting scSetting = (SingleChoiceSetting) mClickedItem; int value = getValueForSingleChoiceSelection(scSetting, which); @@ -425,6 +428,22 @@ else if (scSetting.getKey().contains(SettingsFile.KEY_WIIMOTE_EXTENSION) && } } + if (mClickedItem.getSection().equals(SettingsFile.KEY_WIIMOTE_PLAYER_1) && + mClickedItem.getKey().equals(SettingsFile.KEY_WIIMOTE_ORIENTATION) && NativeLibrary + .GetConfig(SettingsFile.FILE_NAME_WIIMOTE + ".ini", SettingsFile.KEY_WIIMOTE_PLAYER_1, + SettingsFile.KEY_WIIMOTE_EXTENSION, "None").equals("None")) + { + if (value == 1) + { + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_HORIZONTAL); + } + else + { + editor.putInt("wiiController", InputOverlay.OVERLAY_WIIMOTE_VERTICAL); + } + editor.commit(); + } + closeDialog(); } else if (mClickedItem instanceof SingleChoiceSettingDynamicDescriptions) 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 7d4417a6e1df..8d78f2df978e 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 @@ -933,7 +933,6 @@ private void addWiimoteSubSettings(ArrayList sl, int wiimoteNumber { SettingSection bindingsSection = mSettings.getSection(Settings.SECTION_BINDINGS); - Setting bindA = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_A + wiimoteNumber); Setting bindB = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_B + wiimoteNumber); Setting bind1 = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_1 + wiimoteNumber); @@ -1108,9 +1107,18 @@ private void addExtensionTypeSettings(ArrayList sl, int wiimoteNum int extentionType) { SettingSection bindingsSection = mSettings.getSection(Settings.SECTION_BINDINGS); + SettingSection wiimoteSection = mSettings.getSection(Settings.SECTION_WIIMOTE + (wiimoteNumber - 3)); switch (extentionType) { + case 0: // None + Setting orientation = wiimoteSection.getSetting(SettingsFile.KEY_WIIMOTE_ORIENTATION); + + sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_ORIENTATION, + Settings.SECTION_WIIMOTE + (wiimoteNumber - 3), R.string.wiimote_orientation, 0, + R.array.wiimoteOrientationEntries, R.array.wiimoteOrientationValues, 0, orientation)); + break; + case 1: // Nunchuk Setting bindC = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_C + wiimoteNumber); @@ -1577,25 +1585,23 @@ private int getVideoBackendValue() { String videoBackend = ((StringSetting) coreSection.getSetting(SettingsFile.KEY_VIDEO_BACKEND)).getValue(); - if (videoBackend.equals("OGL")) + switch (videoBackend) { - videoBackendValue = 0; - } - else if (videoBackend.equals("Vulkan")) - { - videoBackendValue = 1; - } - else if (videoBackend.equals("Software Renderer")) - { - videoBackendValue = 2; - } - else if (videoBackend.equals("Null")) - { - videoBackendValue = 3; - } - else - { - videoBackendValue = 0; + case "Vulkan": + videoBackendValue = 1; + break; + + case "Software Renderer": + videoBackendValue = 2; + break; + + case "Null": + videoBackendValue = 3; + break; + + default: + videoBackendValue = 0; + break; } } catch (NullPointerException ex) @@ -1625,33 +1631,31 @@ private int getExtensionValue(int wiimoteNumber) .getSetting(SettingsFile.KEY_WIIMOTE_EXTENSION)).getValue(); } - if (extension.equals("None")) - { - extensionValue = 0; - } - else if (extension.equals("Nunchuk")) - { - extensionValue = 1; - } - else if (extension.equals("Classic")) - { - extensionValue = 2; - } - else if (extension.equals("Guitar")) - { - extensionValue = 3; - } - else if (extension.equals("Drums")) - { - extensionValue = 4; - } - else if (extension.equals("Turntable")) + switch (extension) { - extensionValue = 5; - } - else - { - extensionValue = 0; + case "Nunchuk": + extensionValue = 1; + break; + + case "Classic": + extensionValue = 2; + break; + + case "Guitar": + extensionValue = 3; + break; + + case "Drums": + extensionValue = 4; + break; + + case "Turntable": + extensionValue = 5; + break; + + default: + extensionValue = 0; + break; } } catch (NullPointerException ex) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java index f13353d4e23f..286785e0147c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java @@ -482,7 +482,8 @@ public static void saveCustomGameSettings(final String gameId, HashMap settings = section.getSettings(); Set sortedKeySet = new TreeSet<>(settings.keySet()); - // Profile options(wii extension) are not saved, only used to properly display values + // Profile options (wii extension and orientation) are not saved, + // only used to properly display values if (sectionKey.contains(Settings.SECTION_PROFILE)) { continue; @@ -491,15 +492,21 @@ public static void saveCustomGameSettings(final String gameId, for (String settingKey : sortedKeySet) { Setting setting = settings.get(settingKey); - // Special case. Extension gets saved into a controller profile + // Extension and orientation gets saved into a controller profile. if (settingKey.contains(SettingsFile.KEY_WIIMOTE_EXTENSION)) { - String padId = - setting.getKey() - .substring(setting.getKey().length() - 1, setting.getKey().length()); + String padId = setting.getKey().substring(setting.getKey().length() - 1); saveCustomWiimoteSetting(gameId, KEY_WIIMOTE_EXTENSION, setting.getValueAsString(), padId); } + else if (settingKey.contains(SettingsFile.KEY_WIIMOTE_ORIENTATION)) + { + String padId = + String.valueOf( + Integer.parseInt(sectionKey.substring(sectionKey.length() - 1)) - 1); + saveCustomWiimoteSetting(gameId, KEY_WIIMOTE_ORIENTATION, setting.getValueAsString(), + padId); + } else { NativeLibrary.SetUserSetting(gameId, mapSectionNameFromIni(section.getName()), @@ -536,14 +543,14 @@ private static void saveCustomWiimoteSetting(final String gameId, final String k DirectoryInitialization.copyFile(defautlWiiProfilePath, wiiConfigPath); NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, "Device", - "Android/" + (Integer.valueOf(padId) + 4) + "/Touchscreen"); + "Android/" + (Integer.parseInt(padId) + 4) + "/Touchscreen"); } NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, key, value); // Enable the profile NativeLibrary.SetUserSetting(gameId, Settings.SECTION_CONTROLS, - KEY_WIIMOTE_PROFILE + (Integer.valueOf(padId) + 1), profile); + KEY_WIIMOTE_PROFILE + (Integer.parseInt(padId) + 1), profile); } private static String mapSectionNameFromIni(String generalSectionName) 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 dfa51e592cdf..bb2152be68d9 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 @@ -46,8 +46,8 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener { public static final int OVERLAY_GAMECUBE = 0; - public static final int OVERLAY_WIIMOTE = 1; - public static final int OVERLAY_WIIMOTE_SIDEWAYS = 2; + public static final int OVERLAY_WIIMOTE_VERTICAL = 1; + public static final int OVERLAY_WIIMOTE_HORIZONTAL = 2; public static final int OVERLAY_WIIMOTE_NUNCHUK = 3; public static final int OVERLAY_WIIMOTE_CLASSIC = 4; public static final int OVERLAY_NONE = 5; @@ -769,8 +769,8 @@ public void refreshControls() addGameCubeOverlayControls(orientation); break; - case OVERLAY_WIIMOTE: - case OVERLAY_WIIMOTE_SIDEWAYS: + case OVERLAY_WIIMOTE_VERTICAL: + case OVERLAY_WIIMOTE_HORIZONTAL: addWiimoteOverlayControls(orientation); break; diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 76e6cc6e071b..838b726a0857 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -117,6 +117,16 @@ 5 + + + Vertical + Horizontal + + + 0 + 1 + + Low diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index ce0c9c869aac..7839ee6019b3 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -41,6 +41,7 @@ Extension + Orientation Choose and bind the Wii Remote extension. IR Swing