diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt index e74802da4..06b8167ab 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt @@ -27,7 +27,25 @@ enum class BooleanSetting( OVERLAY_BACKGROUND("overlay_background", Settings.SECTION_LAYOUT, false), DELAY_START_LLE_MODULES("delay_start_for_lle_modules", Settings.SECTION_DEBUG, true), DETERMINISTIC_ASYNC_OPERATIONS("deterministic_async_operations", Settings.SECTION_DEBUG, false), - REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false); + REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false), + LLE_APPLETS("lle_applets", Settings.SECTION_SYSTEM, false), + NEW_3DS("is_new_3ds", Settings.SECTION_SYSTEM, true), + LINEAR_FILTERING("filter_mode", Settings.SECTION_RENDERER, true), + SHADERS_ACCURATE_MUL("shaders_accurate_mul", Settings.SECTION_RENDERER, false), + DISK_SHADER_CACHE("use_disk_shader_cache", Settings.SECTION_RENDERER, true), + DUMP_TEXTURES("dump_textures", Settings.SECTION_UTILITY, false), + CUSTOM_TEXTURES("custom_textures", Settings.SECTION_UTILITY, false), + ASYNC_CUSTOM_LOADING("async_custom_loading", Settings.SECTION_UTILITY, true), + PRELOAD_TEXTURES("preload_textures", Settings.SECTION_UTILITY, false), + ENABLE_AUDIO_STRETCHING("enable_audio_stretching", Settings.SECTION_AUDIO, true), + ENABLE_REALTIME_AUDIO("enable_realtime_audio", Settings.SECTION_AUDIO, false), + CPU_JIT("use_cpu_jit", Settings.SECTION_CORE, true), + HW_SHADER("use_hw_shader", Settings.SECTION_RENDERER, true), + VSYNC("use_vsync_new", Settings.SECTION_RENDERER, true), + USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, true), + DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, false), + DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, false), + USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, false); override var boolean: Boolean = defaultValue @@ -52,6 +70,14 @@ enum class BooleanSetting( DELAY_START_LLE_MODULES, DETERMINISTIC_ASYNC_OPERATIONS, REQUIRED_ONLINE_LLE_MODULES, + NEW_3DS, + LLE_APPLETS, + VSYNC, + DEBUG_RENDERER, + CPU_JIT, + ASYNC_CUSTOM_LOADING, + SHADERS_ACCURATE_MUL, + USE_ARTIC_BASE_CONTROLLER ) fun from(key: String): BooleanSetting? = diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt index 987fd4302..bc8ede6ee 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt @@ -44,29 +44,12 @@ enum class IntSetting( PORTRAIT_BOTTOM_WIDTH("custom_portrait_bottom_width",Settings.SECTION_LAYOUT,640), PORTRAIT_BOTTOM_HEIGHT("custom_portrait_bottom_height",Settings.SECTION_LAYOUT,480), AUDIO_INPUT_TYPE("input_type", Settings.SECTION_AUDIO, 0), - NEW_3DS("is_new_3ds", Settings.SECTION_SYSTEM, 1), - LLE_APPLETS("lle_applets", Settings.SECTION_SYSTEM, 1), CPU_CLOCK_SPEED("cpu_clock_percentage", Settings.SECTION_CORE, 100), - LINEAR_FILTERING("filter_mode", Settings.SECTION_RENDERER, 1), - SHADERS_ACCURATE_MUL("shaders_accurate_mul", Settings.SECTION_RENDERER, 0), - DISK_SHADER_CACHE("use_disk_shader_cache", Settings.SECTION_RENDERER, 1), - DUMP_TEXTURES("dump_textures", Settings.SECTION_UTILITY, 0), - CUSTOM_TEXTURES("custom_textures", Settings.SECTION_UTILITY, 0), - ASYNC_CUSTOM_LOADING("async_custom_loading", Settings.SECTION_UTILITY, 1), - PRELOAD_TEXTURES("preload_textures", Settings.SECTION_UTILITY, 0), - ENABLE_AUDIO_STRETCHING("enable_audio_stretching", Settings.SECTION_AUDIO, 1), - ENABLE_REALTIME_AUDIO("enable_realtime_audio", Settings.SECTION_AUDIO, 0), - CPU_JIT("use_cpu_jit", Settings.SECTION_CORE, 1), - HW_SHADER("use_hw_shader", Settings.SECTION_RENDERER, 1), - VSYNC("use_vsync_new", Settings.SECTION_RENDERER, 1), - DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, 0), TEXTURE_FILTER("texture_filter", Settings.SECTION_RENDERER, 0), TEXTURE_SAMPLING("texture_sampling", Settings.SECTION_RENDERER, 0), USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, 1), DELAY_RENDER_THREAD_US("delay_game_render_thread_us", Settings.SECTION_RENDERER, 0), - USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, 0), ORIENTATION_OPTION("screen_orientation", Settings.SECTION_LAYOUT, 2), - DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, 0), TURBO_LIMIT("turbo_limit", Settings.SECTION_CORE, 200), PERFORMANCE_OVERLAY_POSITION("performance_overlay_position", Settings.SECTION_LAYOUT, 0), ASPECT_RATIO("aspect_ratio", Settings.SECTION_LAYOUT, 0); @@ -90,16 +73,8 @@ enum class IntSetting( private val NOT_RUNTIME_EDITABLE = listOf( EMULATED_REGION, INIT_CLOCK, - NEW_3DS, - LLE_APPLETS, GRAPHICS_API, - VSYNC, - DEBUG_RENDERER, - CPU_JIT, - ASYNC_CUSTOM_LOADING, AUDIO_INPUT_TYPE, - USE_ARTIC_BASE_CONTROLLER, - SHADERS_ACCURATE_MUL ) fun from(key: String): IntSetting? = IntSetting.values().firstOrNull { it.key == key } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SwitchSetting.kt index 3975ec8c5..b8badfd06 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SwitchSetting.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -9,11 +9,11 @@ import org.citra.citra_emu.features.settings.model.AbstractIntSetting import org.citra.citra_emu.features.settings.model.AbstractSetting class SwitchSetting( - setting: AbstractSetting, + setting: AbstractBooleanSetting, titleId: Int, descriptionId: Int, val key: String? = null, - val defaultValue: Any? = null, + val defaultValue: Boolean = false, override var isEnabled: Boolean = true ) : SettingsItem(setting, titleId, descriptionId) { override val type = TYPE_SWITCH @@ -21,42 +21,19 @@ class SwitchSetting( val isChecked: Boolean get() { if (setting == null) { - return defaultValue as Boolean + return defaultValue } - - // Try integer setting - try { - val setting = setting as AbstractIntSetting - return setting.int == 1 - } catch (_: ClassCastException) { - } - - // Try boolean setting - try { - val setting = setting as AbstractBooleanSetting - return setting.boolean - } catch (_: ClassCastException) { - } - return defaultValue as Boolean + val setting = setting as AbstractBooleanSetting + return setting.boolean } /** - * Write a value to the backing boolean. If that boolean was previously null, - * initializes a new one and returns it, so it can be added to the Hashmap. + * Write a value to the backing boolean. * * @param checked Pretty self explanatory. * @return the existing setting with the new value applied. */ - fun setChecked(checked: Boolean): AbstractSetting { - // Try integer setting - try { - val setting = setting as AbstractIntSetting - setting.int = if (checked) 1 else 0 - return setting - } catch (_: ClassCastException) { - } - - // Try boolean setting + fun setChecked(checked: Boolean): AbstractBooleanSetting { val setting = setting as AbstractBooleanSetting setting.boolean = checked return setting 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 6247e59cc..428a2d226 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 @@ -220,11 +220,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) sl.apply { add( SwitchSetting( - IntSetting.USE_FRAME_LIMIT, + BooleanSetting.USE_FRAME_LIMIT, R.string.frame_limit_enable, R.string.frame_limit_enable_description, - IntSetting.USE_FRAME_LIMIT.key, - IntSetting.USE_FRAME_LIMIT.defaultValue + BooleanSetting.USE_FRAME_LIMIT.key, + BooleanSetting.USE_FRAME_LIMIT.defaultValue ) ) add( @@ -295,20 +295,20 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) add(HeaderSetting(R.string.emulation_settings)) add( SwitchSetting( - IntSetting.NEW_3DS, + BooleanSetting.NEW_3DS, R.string.new_3ds, 0, - IntSetting.NEW_3DS.key, - IntSetting.NEW_3DS.defaultValue + BooleanSetting.NEW_3DS.key, + BooleanSetting.NEW_3DS.defaultValue ) ) add( SwitchSetting( - IntSetting.LLE_APPLETS, + BooleanSetting.LLE_APPLETS, R.string.lle_applets, 0, - IntSetting.LLE_APPLETS.key, - IntSetting.LLE_APPLETS.defaultValue + BooleanSetting.LLE_APPLETS.key, + BooleanSetting.LLE_APPLETS.defaultValue ) ) add( @@ -788,11 +788,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) add(HeaderSetting(R.string.miscellaneous)) add( SwitchSetting( - IntSetting.USE_ARTIC_BASE_CONTROLLER, + BooleanSetting.USE_ARTIC_BASE_CONTROLLER, R.string.use_artic_base_controller, R.string.use_artic_base_controller_description, - IntSetting.USE_ARTIC_BASE_CONTROLLER.key, - IntSetting.USE_ARTIC_BASE_CONTROLLER.defaultValue + BooleanSetting.USE_ARTIC_BASE_CONTROLLER.key, + BooleanSetting.USE_ARTIC_BASE_CONTROLLER.defaultValue ) ) } @@ -861,29 +861,29 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) ) add( SwitchSetting( - IntSetting.LINEAR_FILTERING, + BooleanSetting.LINEAR_FILTERING, R.string.linear_filtering, R.string.linear_filtering_description, - IntSetting.LINEAR_FILTERING.key, - IntSetting.LINEAR_FILTERING.defaultValue + BooleanSetting.LINEAR_FILTERING.key, + BooleanSetting.LINEAR_FILTERING.defaultValue ) ) add( SwitchSetting( - IntSetting.SHADERS_ACCURATE_MUL, + BooleanSetting.ASYNC_SHADERS, R.string.shaders_accurate_mul, R.string.shaders_accurate_mul_description, - IntSetting.SHADERS_ACCURATE_MUL.key, - IntSetting.SHADERS_ACCURATE_MUL.defaultValue + BooleanSetting.SHADERS_ACCURATE_MUL.key, + BooleanSetting.SHADERS_ACCURATE_MUL.defaultValue ) ) add( SwitchSetting( - IntSetting.DISK_SHADER_CACHE, + BooleanSetting.DISK_SHADER_CACHE, R.string.use_disk_shader_cache, R.string.use_disk_shader_cache_description, - IntSetting.DISK_SHADER_CACHE.key, - IntSetting.DISK_SHADER_CACHE.defaultValue + BooleanSetting.DISK_SHADER_CACHE.key, + BooleanSetting.DISK_SHADER_CACHE.defaultValue ) ) add( @@ -936,11 +936,11 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) ) add( SwitchSetting( - IntSetting.DISABLE_RIGHT_EYE_RENDER, + BooleanSetting.DISABLE_RIGHT_EYE_RENDER, R.string.disable_right_eye_render, R.string.disable_right_eye_render_description, - IntSetting.DISABLE_RIGHT_EYE_RENDER.key, - IntSetting.DISABLE_RIGHT_EYE_RENDER.defaultValue + BooleanSetting.DISABLE_RIGHT_EYE_RENDER.key, + BooleanSetting.DISABLE_RIGHT_EYE_RENDER.defaultValue ) ) @@ -985,29 +985,29 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) add(HeaderSetting(R.string.utility)) add( SwitchSetting( - IntSetting.DUMP_TEXTURES, + BooleanSetting.DUMP_TEXTURES, R.string.dump_textures, R.string.dump_textures_description, - IntSetting.DUMP_TEXTURES.key, - IntSetting.DUMP_TEXTURES.defaultValue + BooleanSetting.DUMP_TEXTURES.key, + BooleanSetting.DUMP_TEXTURES.defaultValue ) ) add( SwitchSetting( - IntSetting.CUSTOM_TEXTURES, + BooleanSetting.CUSTOM_TEXTURES, R.string.custom_textures, R.string.custom_textures_description, - IntSetting.CUSTOM_TEXTURES.key, - IntSetting.CUSTOM_TEXTURES.defaultValue + BooleanSetting.CUSTOM_TEXTURES.key, + BooleanSetting.CUSTOM_TEXTURES.defaultValue ) ) add( SwitchSetting( - IntSetting.ASYNC_CUSTOM_LOADING, + BooleanSetting.ASYNC_CUSTOM_LOADING, R.string.async_custom_loading, R.string.async_custom_loading_description, - IntSetting.ASYNC_CUSTOM_LOADING.key, - IntSetting.ASYNC_CUSTOM_LOADING.defaultValue + BooleanSetting.ASYNC_CUSTOM_LOADING.key, + BooleanSetting.ASYNC_CUSTOM_LOADING.defaultValue ) ) @@ -1494,20 +1494,20 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) ) add( SwitchSetting( - IntSetting.ENABLE_AUDIO_STRETCHING, + BooleanSetting.ENABLE_AUDIO_STRETCHING, R.string.audio_stretch, R.string.audio_stretch_description, - IntSetting.ENABLE_AUDIO_STRETCHING.key, - IntSetting.ENABLE_AUDIO_STRETCHING.defaultValue + BooleanSetting.ENABLE_AUDIO_STRETCHING.key, + BooleanSetting.ENABLE_AUDIO_STRETCHING.defaultValue ) ) add( SwitchSetting( - IntSetting.ENABLE_REALTIME_AUDIO, + BooleanSetting.ENABLE_REALTIME_AUDIO, R.string.realtime_audio, R.string.realtime_audio_description, - IntSetting.ENABLE_REALTIME_AUDIO.key, - IntSetting.ENABLE_REALTIME_AUDIO.defaultValue + BooleanSetting.ENABLE_REALTIME_AUDIO.key, + BooleanSetting.ENABLE_REALTIME_AUDIO.defaultValue ) ) add( @@ -1562,38 +1562,38 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) ) add( SwitchSetting( - IntSetting.CPU_JIT, + BooleanSetting.CPU_JIT, R.string.cpu_jit, R.string.cpu_jit_description, - IntSetting.CPU_JIT.key, - IntSetting.CPU_JIT.defaultValue + BooleanSetting.CPU_JIT.key, + BooleanSetting.CPU_JIT.defaultValue ) ) add( SwitchSetting( - IntSetting.HW_SHADER, + BooleanSetting.HW_SHADER, R.string.hw_shaders, R.string.hw_shaders_description, - IntSetting.HW_SHADER.key, - IntSetting.HW_SHADER.defaultValue + BooleanSetting.HW_SHADER.key, + BooleanSetting.HW_SHADER.defaultValue ) ) add( SwitchSetting( - IntSetting.VSYNC, + BooleanSetting.VSYNC, R.string.vsync, R.string.vsync_description, - IntSetting.VSYNC.key, - IntSetting.VSYNC.defaultValue + BooleanSetting.VSYNC.key, + BooleanSetting.VSYNC.defaultValue ) ) add( SwitchSetting( - IntSetting.DEBUG_RENDERER, + BooleanSetting.DEBUG_RENDERER, R.string.renderer_debug, R.string.renderer_debug_description, - IntSetting.DEBUG_RENDERER.key, - IntSetting.DEBUG_RENDERER.defaultValue + BooleanSetting.DEBUG_RENDERER.key, + BooleanSetting.DEBUG_RENDERER.defaultValue ) ) add(