diff options
5 files changed, 62 insertions, 6 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index edc1a19ff..703d4623b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -21,6 +21,7 @@ import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.preference.PreferenceManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication @@ -30,12 +31,8 @@ import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.model.Game -import org.yuzu.yuzu_emu.utils.DirectoryInitialization +import org.yuzu.yuzu_emu.utils.* import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState -import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver -import org.yuzu.yuzu_emu.utils.EmulationMenuSettings -import org.yuzu.yuzu_emu.utils.InsetsHelper -import org.yuzu.yuzu_emu.utils.Log import org.yuzu.yuzu_emu.utils.SerializableHelper.parcelable class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.FrameCallback { @@ -281,6 +278,35 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram startConfiguringControls() true } + R.id.menu_toggle_controls -> { + val preferences = + PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + val optionsArray = BooleanArray(15) + for (i in 0..14) { + optionsArray[i] = preferences.getBoolean("buttonToggle$i", i < 13) + } + + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.emulation_toggle_controls) + .setMultiChoiceItems( + R.array.gamepadButtons, + optionsArray + ) { _, indexSelected, isChecked -> + preferences.edit() + .putBoolean("buttonToggle$indexSelected", isChecked) + .commit() + } + .setPositiveButton(android.R.string.ok) { _, _ -> + refreshInputOverlay() + } + .setNeutralButton(R.string.emulation_toggle_all) { _, _ -> + EmulationMenuSettings.showOverlay = !EmulationMenuSettings.showOverlay + refreshInputOverlay() + } + .show() + + true + } R.id.menu_reset_overlay -> { binding.drawerLayout.close() resetInputOverlay() diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt index 937f13fea..e51ac1cc1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt @@ -57,6 +57,6 @@ object EmulationMenuSettings { set(value) { preferences.edit() .putBoolean(Settings.PREF_MENU_SETTINGS_SHOW_OVERLAY, value) - .apply() + .commit() } } diff --git a/src/android/app/src/main/res/menu/menu_overlay_options.xml b/src/android/app/src/main/res/menu/menu_overlay_options.xml index 75c84cdf3..b9341c508 100644 --- a/src/android/app/src/main/res/menu/menu_overlay_options.xml +++ b/src/android/app/src/main/res/menu/menu_overlay_options.xml @@ -6,6 +6,10 @@ android:title="@string/emulation_touch_overlay_edit" /> <item + android:id="@+id/menu_toggle_controls" + android:title="@string/emulation_toggle_controls" /> + + <item android:id="@+id/menu_reset_overlay" android:title="@string/emulation_touch_overlay_reset" /> diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 7e25f12b8..6d909ddae 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -135,4 +135,22 @@ <item>3</item> </integer-array> + <string-array name="gamepadButtons"> + <item>A</item> + <item>B</item> + <item>X</item> + <item>Y</item> + <item>L</item> + <item>R</item> + <item>ZL</item> + <item>ZR</item> + <item>+</item> + <item>-</item> + <item>@string/gamepad_d_pad</item> + <item>@string/gamepad_left_stick</item> + <item>@string/gamepad_right_stick</item> + <item>@string/gamepad_home</item> + <item>@string/gamepad_screenshot</item> + </string-array> + </resources> diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 5c31fb322..ea9290df5 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -85,6 +85,7 @@ <string name="emulation_exit">Exit Emulation</string> <string name="emulation_done">Done</string> <string name="emulation_toggle_controls">Toggle Controls</string> + <string name="emulation_toggle_all">Toggle All</string> <string name="emulation_control_scale">Adjust Scale</string> <string name="emulation_touch_overlay_reset">Reset Overlay</string> <string name="emulation_touch_overlay_edit">Edit Overlay</string> @@ -173,4 +174,11 @@ <string name="cpu_accuracy_unsafe">Unsafe</string> <string name="cpu_accuracy_paranoid">Paranoid (Slow)</string> + <!-- Gamepad Buttons --> + <string name="gamepad_d_pad">D-Pad</string> + <string name="gamepad_left_stick">Left Stick</string> + <string name="gamepad_right_stick">Right Stick</string> + <string name="gamepad_home">Home</string> + <string name="gamepad_screenshot">Screenshot</string> + </resources> |