From d6c0f8e74933e291023099f47cae2901410c0f42 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 1 Oct 2023 18:35:01 +0200 Subject: Android: Get profile name from core To avoid duplicating information between Kotlin and C++. --- .../features/input/model/controlleremu/EmulatedController.kt | 2 ++ .../dolphinemu/features/input/ui/ProfileDialogPresenter.kt | 9 ++++----- .../dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'Source/Android/app/src') diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt index 348e75b6a0..c91bbbe1ab 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt @@ -30,6 +30,8 @@ class EmulatedController private constructor(private val pointer: Long) { external fun saveProfile(path: String) + external fun getProfileName(): String + companion object { @JvmStatic external fun getGcPad(controllerIndex: Int): EmulatedController diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialogPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialogPresenter.kt index 624441aa73..2896c815fe 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialogPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialogPresenter.kt @@ -100,15 +100,14 @@ class ProfileDialogPresenter { .show() } - private val profileDirectoryName: String - get() = if (menuTag.isGCPadMenu) "GCPad" else if (menuTag.isWiimoteMenu) "Wiimote" else throw UnsupportedOperationException() - - private fun getProfileDirectoryPath(stock: Boolean): String = - if (stock) { + private fun getProfileDirectoryPath(stock: Boolean): String { + val profileDirectoryName = menuTag.correspondingEmulatedController.getProfileName() + return if (stock) { "${DirectoryInitialization.getSysDirectory()}/Profiles/$profileDirectoryName/" } else { "${DirectoryInitialization.getUserDirectory()}/Config/Profiles/$profileDirectoryName/" } + } private fun getProfilePath(profileName: String, stock: Boolean): String = getProfileDirectoryPath(stock) + profileName + EXTENSION diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index 099ae980e6..c7261c88f8 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -2076,7 +2076,7 @@ class SettingsFragmentPresenter( val gcPad = EmulatedController.getGcPad(gcPadNumber) if (!TextUtils.isEmpty(gameId)) { - addControllerPerGameSettings(sl, "Pad", gcPadNumber) + addControllerPerGameSettings(sl, gcPad, gcPadNumber) } else { addControllerMetaSettings(sl, gcPad) addControllerMappingSettings(sl, gcPad, null) @@ -2106,7 +2106,7 @@ class SettingsFragmentPresenter( val wiimote = EmulatedController.getWiimote(wiimoteNumber) if (!TextUtils.isEmpty(gameId)) { - addControllerPerGameSettings(sl, "Wiimote", wiimoteNumber) + addControllerPerGameSettings(sl, wiimote, wiimoteNumber) } else { addControllerMetaSettings(sl, wiimote) @@ -2202,11 +2202,11 @@ class SettingsFragmentPresenter( */ private fun addControllerPerGameSettings( sl: ArrayList, - profileString: String, + controller: EmulatedController, controllerNumber: Int ) { val profiles = ProfileDialogPresenter(menuTag).getProfileNames(false) - val profileKey = profileString + "Profile" + (controllerNumber + 1) + val profileKey = controller.getProfileName() + "Profile" + (controllerNumber + 1) sl.add( StringSingleChoiceSetting( context, -- cgit v1.2.3 From d811c12196b7692695ff2b864ea7ea348247d641 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 1 Oct 2023 17:25:17 +0200 Subject: Android: Add more GameCube controller types For all your PSO needs. --- .../model/controlleremu/EmulatedController.kt | 3 ++ .../settings/ui/SettingsFragmentPresenter.kt | 63 +++++++++++++--------- Source/Android/app/src/main/res/values/arrays.xml | 8 +++ Source/Android/app/src/main/res/values/strings.xml | 13 +++-- 4 files changed, 59 insertions(+), 28 deletions(-) (limited to 'Source/Android/app/src') diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt index c91bbbe1ab..e84dd201a5 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/controlleremu/EmulatedController.kt @@ -36,6 +36,9 @@ class EmulatedController private constructor(private val pointer: Long) { @JvmStatic external fun getGcPad(controllerIndex: Int): EmulatedController + @JvmStatic + external fun getGcKeyboard(controllerIndex: Int): EmulatedController + @JvmStatic external fun getWiimote(controllerIndex: Int): EmulatedController diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index c7261c88f8..d2eefd41f4 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -2071,34 +2071,49 @@ class SettingsFragmentPresenter( } private fun addGcPadSubSettings(sl: ArrayList, gcPadNumber: Int, gcPadType: Int) { - if (gcPadType == 6) { - // Emulated - val gcPad = EmulatedController.getGcPad(gcPadNumber) + when (gcPadType) { + 6, 8, 9, 10 -> { + // Emulated + val gcPad = EmulatedController.getGcPad(gcPadNumber) - if (!TextUtils.isEmpty(gameId)) { - addControllerPerGameSettings(sl, gcPad, gcPadNumber) - } else { - addControllerMetaSettings(sl, gcPad) - addControllerMappingSettings(sl, gcPad, null) + if (!TextUtils.isEmpty(gameId)) { + addControllerPerGameSettings(sl, gcPad, gcPadNumber) + } else { + addControllerMetaSettings(sl, gcPad) + addControllerMappingSettings(sl, gcPad, null) + } } - } else if (gcPadType == 12) { - // Adapter - sl.add( - SwitchSetting( - context, - BooleanSetting.getSettingForAdapterRumble(gcPadNumber), - R.string.gc_adapter_rumble, - R.string.gc_adapter_rumble_description + 7 -> { + // Emulated keyboard controller + val gcKeyboard = EmulatedController.getGcKeyboard(gcPadNumber) + + if (!TextUtils.isEmpty(gameId)) { + addControllerPerGameSettings(sl, gcKeyboard, gcPadNumber) + } else { + sl.add(HeaderSetting(context, R.string.keyboard_controller_warning, 0)) + addControllerMetaSettings(sl, gcKeyboard) + addControllerMappingSettings(sl, gcKeyboard, null) + } + } + 12 -> { + // Adapter + sl.add( + SwitchSetting( + context, + BooleanSetting.getSettingForAdapterRumble(gcPadNumber), + R.string.gc_adapter_rumble, + R.string.gc_adapter_rumble_description + ) ) - ) - sl.add( - SwitchSetting( - context, - BooleanSetting.getSettingForSimulateKonga(gcPadNumber), - R.string.gc_adapter_bongos, - R.string.gc_adapter_bongos_description + sl.add( + SwitchSetting( + context, + BooleanSetting.getSettingForSimulateKonga(gcPadNumber), + R.string.gc_adapter_bongos, + R.string.gc_adapter_bongos_description + ) ) - ) + } } } diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 212bcb3d2b..2f8adeb60c 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -367,11 +367,19 @@ @string/gcpad_disabled @string/gcpad_emulated + @string/gcpad_keyboard + @string/gcpad_steering_wheel + @string/gcpad_dance_mat + @string/gcpad_taru_konga @string/gcpad_gc_adapter 0 6 + 7 + 8 + 9 + 10 12 diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index a81cb58a59..0e980af855 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -47,6 +47,7 @@ Clear Clear settings for this controller. Are you sure? Your current controller settings will be deleted. + "You are configuring a \"Keyboard Controller\". This device is exclusively for \"Phantasy Star Online Episode I & II\". If you are unsure, turn back now and configure a \"Standard Controller\". Your controller settings are from an old version of Dolphin and won\'t work in this version. Press \"Default\" to start over with new settings. Input Binding @@ -772,13 +773,17 @@ It can efficiently compress both junk data and encrypted Wii data. Unknown - Disabled - Emulated + None + Standard Controller + Keyboard Controller + Steering Wheel + Dance Mat + DK Bongos GameCube Adapter - Disabled - Emulated + None + Emulated Wii Remote Real Wii Remote (DolphinBar required) -- cgit v1.2.3