diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt index 9da575bd5..c627d4179 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -41,6 +41,7 @@ import org.citra.citra_emu.utils.BirthdayMonth import org.citra.citra_emu.utils.Log import org.citra.citra_emu.utils.SystemSaveGame import org.citra.citra_emu.utils.ThemeUtil +import org.citra.citra_emu.vr.utils.VRUtils class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) { private var menuTag: String? = null @@ -630,11 +631,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) } // VR-SPECIFIC: just remove hotkeys for this version. - /* add(HeaderSetting(R.string.controller_hotkeys)) - Settings.hotKeys.forEachIndexed { i: Int, key: String -> + add(HeaderSetting(R.string.controller_hotkeys)) + VRUtils.hotKeys.forEachIndexed { i: Int, key: String -> val button = getInputObject(key) - add(InputBindingSetting(button, Settings.hotkeyTitles[i])) - }*/ + add(InputBindingSetting(button, VRUtils.hotkeyTitles[i])) + } } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationLifecycleUtil.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationLifecycleUtil.kt index 8f3b5dc07..82fee15e4 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationLifecycleUtil.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationLifecycleUtil.kt @@ -4,13 +4,21 @@ package org.citra.citra_emu.utils +import org.citra.citra_emu.NativeLibrary +import org.citra.citra_emu.vr.VrActivity + object EmulationLifecycleUtil { private var shutdownHooks: MutableList = ArrayList() private var pauseResumeHooks: MutableList = ArrayList() fun closeGame() { - shutdownHooks.forEach(Runnable::run) + val activity = NativeLibrary.sEmulationActivity.get() + if (activity != null && activity is VrActivity) { + activity.quitToMenu() + } else { + shutdownHooks.forEach(Runnable::run) + } } fun pauseOrResume() { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/VrActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/VrActivity.kt index cfa3d37b9..5dbc7ae56 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/vr/VrActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/VrActivity.kt @@ -113,6 +113,12 @@ class VrActivity : EmulationActivity() { runOnUiThread(clickRunnable) } + fun quitToMenu() { + finish() + val relaunchMainIntent = Intent(this, MainActivity::class.java) + startActivity(relaunchMainIntent) + } + fun pauseGame() { Log.info("VR [Java] pauseGame"); if (NativeLibrary.isRunning()) { NativeLibrary.pauseEmulation(); } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt index cdd1e482a..354536f18 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt @@ -2,6 +2,8 @@ package org.citra.citra_emu.vr.utils import android.view.KeyEvent import org.citra.citra_emu.NativeLibrary +import org.citra.citra_emu.R +import org.citra.citra_emu.features.settings.model.Settings object VRUtils { val hMDType: Int @@ -19,6 +21,13 @@ object VRUtils { } + val hotKeys = listOf( + Settings.HOTKEY_CLOSE_GAME, + ) + val hotkeyTitles = listOf( + R.string.emulation_close_game, + ) + // Not really VR-related, but for some reason, Citra doesn't have default mappings for gamepad enum class ButtonType(val nativeLibrary: Int, val android: Int) { BUTTON_A(NativeLibrary.ButtonType.BUTTON_A, KeyEvent.KEYCODE_BUTTON_A),