diff options
Diffstat (limited to '')
34 files changed, 324 insertions, 353 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt index f41d7bdbf..9b08f008d 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt | |||
| @@ -172,7 +172,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 172 | 172 | ||
| 173 | override fun onUserLeaveHint() { | 173 | override fun onUserLeaveHint() { |
| 174 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { | 174 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { |
| 175 | if (BooleanSetting.PICTURE_IN_PICTURE.boolean && !isInPictureInPictureMode) { | 175 | if (BooleanSetting.PICTURE_IN_PICTURE.getBoolean() && !isInPictureInPictureMode) { |
| 176 | val pictureInPictureParamsBuilder = PictureInPictureParams.Builder() | 176 | val pictureInPictureParamsBuilder = PictureInPictureParams.Builder() |
| 177 | .getPictureInPictureActionsBuilder().getPictureInPictureAspectBuilder() | 177 | .getPictureInPictureActionsBuilder().getPictureInPictureAspectBuilder() |
| 178 | enterPictureInPictureMode(pictureInPictureParamsBuilder.build()) | 178 | enterPictureInPictureMode(pictureInPictureParamsBuilder.build()) |
| @@ -284,7 +284,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 284 | 284 | ||
| 285 | private fun PictureInPictureParams.Builder.getPictureInPictureAspectBuilder(): | 285 | private fun PictureInPictureParams.Builder.getPictureInPictureAspectBuilder(): |
| 286 | PictureInPictureParams.Builder { | 286 | PictureInPictureParams.Builder { |
| 287 | val aspectRatio = when (IntSetting.RENDERER_ASPECT_RATIO.int) { | 287 | val aspectRatio = when (IntSetting.RENDERER_ASPECT_RATIO.getInt()) { |
| 288 | 0 -> Rational(16, 9) | 288 | 0 -> Rational(16, 9) |
| 289 | 1 -> Rational(4, 3) | 289 | 1 -> Rational(4, 3) |
| 290 | 2 -> Rational(21, 9) | 290 | 2 -> Rational(21, 9) |
| @@ -331,7 +331,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 331 | pictureInPictureActions.add(pauseRemoteAction) | 331 | pictureInPictureActions.add(pauseRemoteAction) |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | if (BooleanSetting.AUDIO_MUTED.boolean) { | 334 | if (BooleanSetting.AUDIO_MUTED.getBoolean()) { |
| 335 | val unmuteIcon = Icon.createWithResource( | 335 | val unmuteIcon = Icon.createWithResource( |
| 336 | this@EmulationActivity, | 336 | this@EmulationActivity, |
| 337 | R.drawable.ic_pip_unmute | 337 | R.drawable.ic_pip_unmute |
| @@ -376,7 +376,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 376 | val isEmulationActive = emulationViewModel.emulationStarted.value && | 376 | val isEmulationActive = emulationViewModel.emulationStarted.value && |
| 377 | !emulationViewModel.isEmulationStopping.value | 377 | !emulationViewModel.isEmulationStopping.value |
| 378 | pictureInPictureParamsBuilder.setAutoEnterEnabled( | 378 | pictureInPictureParamsBuilder.setAutoEnterEnabled( |
| 379 | BooleanSetting.PICTURE_IN_PICTURE.boolean && isEmulationActive | 379 | BooleanSetting.PICTURE_IN_PICTURE.getBoolean() && isEmulationActive |
| 380 | ) | 380 | ) |
| 381 | } | 381 | } |
| 382 | setPictureInPictureParams(pictureInPictureParamsBuilder.build()) | 382 | setPictureInPictureParams(pictureInPictureParamsBuilder.build()) |
| @@ -390,9 +390,13 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 390 | if (!NativeLibrary.isPaused()) NativeLibrary.pauseEmulation() | 390 | if (!NativeLibrary.isPaused()) NativeLibrary.pauseEmulation() |
| 391 | } | 391 | } |
| 392 | if (intent.action == actionUnmute) { | 392 | if (intent.action == actionUnmute) { |
| 393 | if (BooleanSetting.AUDIO_MUTED.boolean) BooleanSetting.AUDIO_MUTED.setBoolean(false) | 393 | if (BooleanSetting.AUDIO_MUTED.getBoolean()) { |
| 394 | BooleanSetting.AUDIO_MUTED.setBoolean(false) | ||
| 395 | } | ||
| 394 | } else if (intent.action == actionMute) { | 396 | } else if (intent.action == actionMute) { |
| 395 | if (!BooleanSetting.AUDIO_MUTED.boolean) BooleanSetting.AUDIO_MUTED.setBoolean(true) | 397 | if (!BooleanSetting.AUDIO_MUTED.getBoolean()) { |
| 398 | BooleanSetting.AUDIO_MUTED.setBoolean(true) | ||
| 399 | } | ||
| 396 | } | 400 | } |
| 397 | buildPictureInPictureParams() | 401 | buildPictureInPictureParams() |
| 398 | } | 402 | } |
| @@ -423,7 +427,9 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 423 | } catch (ignored: Exception) { | 427 | } catch (ignored: Exception) { |
| 424 | } | 428 | } |
| 425 | // Always resume audio, since there is no UI button | 429 | // Always resume audio, since there is no UI button |
| 426 | if (BooleanSetting.AUDIO_MUTED.boolean) BooleanSetting.AUDIO_MUTED.setBoolean(false) | 430 | if (BooleanSetting.AUDIO_MUTED.getBoolean()) { |
| 431 | BooleanSetting.AUDIO_MUTED.setBoolean(false) | ||
| 432 | } | ||
| 427 | } | 433 | } |
| 428 | } | 434 | } |
| 429 | 435 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractBooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractBooleanSetting.kt index aeda8d222..0ba465356 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractBooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractBooleanSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractBooleanSetting : AbstractSetting { | 6 | interface AbstractBooleanSetting : AbstractSetting { |
| 7 | val boolean: Boolean | 7 | fun getBoolean(needsGlobal: Boolean = false): Boolean |
| 8 | |||
| 9 | fun setBoolean(value: Boolean) | 8 | fun setBoolean(value: Boolean) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractByteSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractByteSetting.kt index 606519ad8..cf6300535 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractByteSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractByteSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractByteSetting : AbstractSetting { | 6 | interface AbstractByteSetting : AbstractSetting { |
| 7 | val byte: Byte | 7 | fun getByte(needsGlobal: Boolean = false): Byte |
| 8 | |||
| 9 | fun setByte(value: Byte) | 8 | fun setByte(value: Byte) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractFloatSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractFloatSetting.kt index 974925eed..c6c0bcf34 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractFloatSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractFloatSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractFloatSetting : AbstractSetting { | 6 | interface AbstractFloatSetting : AbstractSetting { |
| 7 | val float: Float | 7 | fun getFloat(needsGlobal: Boolean = false): Float |
| 8 | |||
| 9 | fun setFloat(value: Float) | 8 | fun setFloat(value: Float) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractIntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractIntSetting.kt index 89b285b10..826402c34 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractIntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractIntSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractIntSetting : AbstractSetting { | 6 | interface AbstractIntSetting : AbstractSetting { |
| 7 | val int: Int | 7 | fun getInt(needsGlobal: Boolean = false): Int |
| 8 | |||
| 9 | fun setInt(value: Int) | 8 | fun setInt(value: Int) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractLongSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractLongSetting.kt index 4873942db..2b62cc06b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractLongSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractLongSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractLongSetting : AbstractSetting { | 6 | interface AbstractLongSetting : AbstractSetting { |
| 7 | val long: Long | 7 | fun getLong(needsGlobal: Boolean = false): Long |
| 8 | |||
| 9 | fun setLong(value: Long) | 8 | fun setLong(value: Long) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt index 8b6d29fe5..e384c78c2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractSetting.kt | |||
| @@ -7,12 +7,7 @@ import org.yuzu.yuzu_emu.utils.NativeConfig | |||
| 7 | 7 | ||
| 8 | interface AbstractSetting { | 8 | interface AbstractSetting { |
| 9 | val key: String | 9 | val key: String |
| 10 | val category: Settings.Category | ||
| 11 | val defaultValue: Any | 10 | val defaultValue: Any |
| 12 | val androidDefault: Any? | ||
| 13 | get() = null | ||
| 14 | val valueAsString: String | ||
| 15 | get() = "" | ||
| 16 | 11 | ||
| 17 | val isRuntimeModifiable: Boolean | 12 | val isRuntimeModifiable: Boolean |
| 18 | get() = NativeConfig.getIsRuntimeModifiable(key) | 13 | get() = NativeConfig.getIsRuntimeModifiable(key) |
| @@ -20,5 +15,14 @@ interface AbstractSetting { | |||
| 20 | val pairedSettingKey: String | 15 | val pairedSettingKey: String |
| 21 | get() = NativeConfig.getPairedSettingKey(key) | 16 | get() = NativeConfig.getPairedSettingKey(key) |
| 22 | 17 | ||
| 18 | val isSwitchable: Boolean | ||
| 19 | get() = NativeConfig.getIsSwitchable(key) | ||
| 20 | |||
| 21 | var global: Boolean | ||
| 22 | get() = NativeConfig.usingGlobal(key) | ||
| 23 | set(value) = NativeConfig.setGlobal(key, value) | ||
| 24 | |||
| 25 | fun getValueAsString(needsGlobal: Boolean = false): String | ||
| 26 | |||
| 23 | fun reset() | 27 | fun reset() |
| 24 | } | 28 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractShortSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractShortSetting.kt index 91407ccbb..8bfa81e4a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractShortSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractShortSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractShortSetting : AbstractSetting { | 6 | interface AbstractShortSetting : AbstractSetting { |
| 7 | val short: Short | 7 | fun getShort(needsGlobal: Boolean = false): Short |
| 8 | |||
| 9 | fun setShort(value: Short) | 8 | fun setShort(value: Short) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractStringSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractStringSetting.kt index c8935cc48..6ff8fd3f9 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractStringSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/AbstractStringSetting.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 5 | 5 | ||
| 6 | interface AbstractStringSetting : AbstractSetting { | 6 | interface AbstractStringSetting : AbstractSetting { |
| 7 | val string: String | 7 | fun getString(needsGlobal: Boolean = false): String |
| 8 | |||
| 9 | fun setString(value: String) | 8 | fun setString(value: String) |
| 10 | } | 9 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 8476ce867..16f06cd0a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt | |||
| @@ -5,36 +5,34 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class BooleanSetting( | 8 | enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { |
| 9 | override val key: String, | 9 | AUDIO_MUTED("audio_muted"), |
| 10 | override val category: Settings.Category, | 10 | CPU_DEBUG_MODE("cpu_debug_mode"), |
| 11 | override val androidDefault: Boolean? = null | 11 | FASTMEM("cpuopt_fastmem"), |
| 12 | ) : AbstractBooleanSetting { | 12 | FASTMEM_EXCLUSIVES("cpuopt_fastmem_exclusives"), |
| 13 | AUDIO_MUTED("audio_muted", Settings.Category.Audio), | 13 | RENDERER_USE_SPEED_LIMIT("use_speed_limit"), |
| 14 | CPU_DEBUG_MODE("cpu_debug_mode", Settings.Category.Cpu), | 14 | USE_DOCKED_MODE("use_docked_mode"), |
| 15 | FASTMEM("cpuopt_fastmem", Settings.Category.Cpu), | 15 | RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache"), |
| 16 | FASTMEM_EXCLUSIVES("cpuopt_fastmem_exclusives", Settings.Category.Cpu), | 16 | RENDERER_FORCE_MAX_CLOCK("force_max_clock"), |
| 17 | RENDERER_USE_SPEED_LIMIT("use_speed_limit", Settings.Category.Core), | 17 | RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"), |
| 18 | USE_DOCKED_MODE("use_docked_mode", Settings.Category.System, false), | 18 | RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), |
| 19 | RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache", Settings.Category.Renderer), | 19 | RENDERER_DEBUG("debug"), |
| 20 | RENDERER_FORCE_MAX_CLOCK("force_max_clock", Settings.Category.Renderer), | 20 | PICTURE_IN_PICTURE("picture_in_picture"), |
| 21 | RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders", Settings.Category.Renderer), | 21 | USE_CUSTOM_RTC("custom_rtc_enabled"); |
| 22 | RENDERER_REACTIVE_FLUSHING("use_reactive_flushing", Settings.Category.Renderer, false), | 22 | |
| 23 | RENDERER_DEBUG("debug", Settings.Category.Renderer), | 23 | override fun getBoolean(needsGlobal: Boolean): Boolean = |
| 24 | PICTURE_IN_PICTURE("picture_in_picture", Settings.Category.Android), | 24 | NativeConfig.getBoolean(key, needsGlobal) |
| 25 | USE_CUSTOM_RTC("custom_rtc_enabled", Settings.Category.System); | 25 | |
| 26 | 26 | override fun setBoolean(value: Boolean) { | |
| 27 | override val boolean: Boolean | 27 | if (NativeConfig.isPerGameConfigLoaded()) { |
| 28 | get() = NativeConfig.getBoolean(key, false) | 28 | global = false |
| 29 | 29 | } | |
| 30 | override fun setBoolean(value: Boolean) = NativeConfig.setBoolean(key, value) | 30 | NativeConfig.setBoolean(key, value) |
| 31 | |||
| 32 | override val defaultValue: Boolean by lazy { | ||
| 33 | androidDefault ?: NativeConfig.getBoolean(key, true) | ||
| 34 | } | 31 | } |
| 35 | 32 | ||
| 36 | override val valueAsString: String | 33 | override val defaultValue: Boolean by lazy { NativeConfig.getDefaultToString(key).toBoolean() } |
| 37 | get() = if (boolean) "1" else "0" | 34 | |
| 35 | override fun getValueAsString(needsGlobal: Boolean): String = getBoolean(needsGlobal).toString() | ||
| 38 | 36 | ||
| 39 | override fun reset() = NativeConfig.setBoolean(key, defaultValue) | 37 | override fun reset() = NativeConfig.setBoolean(key, defaultValue) |
| 40 | } | 38 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt index 6ec0a765e..7b7fac211 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt | |||
| @@ -5,21 +5,21 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class ByteSetting( | 8 | enum class ByteSetting(override val key: String) : AbstractByteSetting { |
| 9 | override val key: String, | 9 | AUDIO_VOLUME("volume"); |
| 10 | override val category: Settings.Category | ||
| 11 | ) : AbstractByteSetting { | ||
| 12 | AUDIO_VOLUME("volume", Settings.Category.Audio); | ||
| 13 | 10 | ||
| 14 | override val byte: Byte | 11 | override fun getByte(needsGlobal: Boolean): Byte = NativeConfig.getByte(key, needsGlobal) |
| 15 | get() = NativeConfig.getByte(key, false) | ||
| 16 | 12 | ||
| 17 | override fun setByte(value: Byte) = NativeConfig.setByte(key, value) | 13 | override fun setByte(value: Byte) { |
| 14 | if (NativeConfig.isPerGameConfigLoaded()) { | ||
| 15 | global = false | ||
| 16 | } | ||
| 17 | NativeConfig.setByte(key, value) | ||
| 18 | } | ||
| 18 | 19 | ||
| 19 | override val defaultValue: Byte by lazy { NativeConfig.getByte(key, true) } | 20 | override val defaultValue: Byte by lazy { NativeConfig.getDefaultToString(key).toByte() } |
| 20 | 21 | ||
| 21 | override val valueAsString: String | 22 | override fun getValueAsString(needsGlobal: Boolean): String = getByte(needsGlobal).toString() |
| 22 | get() = byte.toString() | ||
| 23 | 23 | ||
| 24 | override fun reset() = NativeConfig.setByte(key, defaultValue) | 24 | override fun reset() = NativeConfig.setByte(key, defaultValue) |
| 25 | } | 25 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt index 0181d06f2..4644824d8 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt | |||
| @@ -5,22 +5,22 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class FloatSetting( | 8 | enum class FloatSetting(override val key: String) : AbstractFloatSetting { |
| 9 | override val key: String, | ||
| 10 | override val category: Settings.Category | ||
| 11 | ) : AbstractFloatSetting { | ||
| 12 | // No float settings currently exist | 9 | // No float settings currently exist |
| 13 | EMPTY_SETTING("", Settings.Category.UiGeneral); | 10 | EMPTY_SETTING(""); |
| 14 | 11 | ||
| 15 | override val float: Float | 12 | override fun getFloat(needsGlobal: Boolean): Float = NativeConfig.getFloat(key, false) |
| 16 | get() = NativeConfig.getFloat(key, false) | ||
| 17 | 13 | ||
| 18 | override fun setFloat(value: Float) = NativeConfig.setFloat(key, value) | 14 | override fun setFloat(value: Float) { |
| 15 | if (NativeConfig.isPerGameConfigLoaded()) { | ||
| 16 | global = false | ||
| 17 | } | ||
| 18 | NativeConfig.setFloat(key, value) | ||
| 19 | } | ||
| 19 | 20 | ||
| 20 | override val defaultValue: Float by lazy { NativeConfig.getFloat(key, true) } | 21 | override val defaultValue: Float by lazy { NativeConfig.getDefaultToString(key).toFloat() } |
| 21 | 22 | ||
| 22 | override val valueAsString: String | 23 | override fun getValueAsString(needsGlobal: Boolean): String = getFloat(needsGlobal).toString() |
| 23 | get() = float.toString() | ||
| 24 | 24 | ||
| 25 | override fun reset() = NativeConfig.setFloat(key, defaultValue) | 25 | override fun reset() = NativeConfig.setFloat(key, defaultValue) |
| 26 | } | 26 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index ef10b209f..21e4e1afd 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt | |||
| @@ -5,36 +5,33 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class IntSetting( | 8 | enum class IntSetting(override val key: String) : AbstractIntSetting { |
| 9 | override val key: String, | 9 | CPU_BACKEND("cpu_backend"), |
| 10 | override val category: Settings.Category, | 10 | CPU_ACCURACY("cpu_accuracy"), |
| 11 | override val androidDefault: Int? = null | 11 | REGION_INDEX("region_index"), |
| 12 | ) : AbstractIntSetting { | 12 | LANGUAGE_INDEX("language_index"), |
| 13 | CPU_BACKEND("cpu_backend", Settings.Category.Cpu), | 13 | RENDERER_BACKEND("backend"), |
| 14 | CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu), | 14 | RENDERER_ACCURACY("gpu_accuracy"), |
| 15 | REGION_INDEX("region_index", Settings.Category.System), | 15 | RENDERER_RESOLUTION("resolution_setup"), |
| 16 | LANGUAGE_INDEX("language_index", Settings.Category.System), | 16 | RENDERER_VSYNC("use_vsync"), |
| 17 | RENDERER_BACKEND("backend", Settings.Category.Renderer), | 17 | RENDERER_SCALING_FILTER("scaling_filter"), |
| 18 | RENDERER_ACCURACY("gpu_accuracy", Settings.Category.Renderer, 0), | 18 | RENDERER_ANTI_ALIASING("anti_aliasing"), |
| 19 | RENDERER_RESOLUTION("resolution_setup", Settings.Category.Renderer), | 19 | RENDERER_SCREEN_LAYOUT("screen_layout"), |
| 20 | RENDERER_VSYNC("use_vsync", Settings.Category.Renderer), | 20 | RENDERER_ASPECT_RATIO("aspect_ratio"), |
| 21 | RENDERER_SCALING_FILTER("scaling_filter", Settings.Category.Renderer), | 21 | AUDIO_OUTPUT_ENGINE("output_engine"); |
| 22 | RENDERER_ANTI_ALIASING("anti_aliasing", Settings.Category.Renderer), | 22 | |
| 23 | RENDERER_SCREEN_LAYOUT("screen_layout", Settings.Category.Android), | 23 | override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal) |
| 24 | RENDERER_ASPECT_RATIO("aspect_ratio", Settings.Category.Renderer), | 24 | |
| 25 | AUDIO_OUTPUT_ENGINE("output_engine", Settings.Category.Audio); | 25 | override fun setInt(value: Int) { |
| 26 | 26 | if (NativeConfig.isPerGameConfigLoaded()) { | |
| 27 | override val int: Int | 27 | global = false |
| 28 | get() = NativeConfig.getInt(key, false) | 28 | } |
| 29 | 29 | NativeConfig.setInt(key, value) | |
| 30 | override fun setInt(value: Int) = NativeConfig.setInt(key, value) | ||
| 31 | |||
| 32 | override val defaultValue: Int by lazy { | ||
| 33 | androidDefault ?: NativeConfig.getInt(key, true) | ||
| 34 | } | 30 | } |
| 35 | 31 | ||
| 36 | override val valueAsString: String | 32 | override val defaultValue: Int by lazy { NativeConfig.getDefaultToString(key).toInt() } |
| 37 | get() = int.toString() | 33 | |
| 34 | override fun getValueAsString(needsGlobal: Boolean): String = getInt(needsGlobal).toString() | ||
| 38 | 35 | ||
| 39 | override fun reset() = NativeConfig.setInt(key, defaultValue) | 36 | override fun reset() = NativeConfig.setInt(key, defaultValue) |
| 40 | } | 37 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/LongSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/LongSetting.kt index c526fc4cf..e3efd516c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/LongSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/LongSetting.kt | |||
| @@ -5,21 +5,21 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class LongSetting( | 8 | enum class LongSetting(override val key: String) : AbstractLongSetting { |
| 9 | override val key: String, | 9 | CUSTOM_RTC("custom_rtc"); |
| 10 | override val category: Settings.Category | ||
| 11 | ) : AbstractLongSetting { | ||
| 12 | CUSTOM_RTC("custom_rtc", Settings.Category.System); | ||
| 13 | 10 | ||
| 14 | override val long: Long | 11 | override fun getLong(needsGlobal: Boolean): Long = NativeConfig.getLong(key, needsGlobal) |
| 15 | get() = NativeConfig.getLong(key, false) | ||
| 16 | 12 | ||
| 17 | override fun setLong(value: Long) = NativeConfig.setLong(key, value) | 13 | override fun setLong(value: Long) { |
| 14 | if (NativeConfig.isPerGameConfigLoaded()) { | ||
| 15 | global = false | ||
| 16 | } | ||
| 17 | NativeConfig.setLong(key, value) | ||
| 18 | } | ||
| 18 | 19 | ||
| 19 | override val defaultValue: Long by lazy { NativeConfig.getLong(key, true) } | 20 | override val defaultValue: Long by lazy { NativeConfig.getDefaultToString(key).toLong() } |
| 20 | 21 | ||
| 21 | override val valueAsString: String | 22 | override fun getValueAsString(needsGlobal: Boolean): String = getLong(needsGlobal).toString() |
| 22 | get() = long.toString() | ||
| 23 | 23 | ||
| 24 | override fun reset() = NativeConfig.setLong(key, defaultValue) | 24 | override fun reset() = NativeConfig.setLong(key, defaultValue) |
| 25 | } | 25 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt index e3cd66185..9551fc05e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt | |||
| @@ -6,62 +6,11 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 6 | import org.yuzu.yuzu_emu.R | 6 | import org.yuzu.yuzu_emu.R |
| 7 | 7 | ||
| 8 | object Settings { | 8 | object Settings { |
| 9 | enum class Category { | ||
| 10 | Android, | ||
| 11 | Audio, | ||
| 12 | Core, | ||
| 13 | Cpu, | ||
| 14 | CpuDebug, | ||
| 15 | CpuUnsafe, | ||
| 16 | Renderer, | ||
| 17 | RendererAdvanced, | ||
| 18 | RendererDebug, | ||
| 19 | System, | ||
| 20 | SystemAudio, | ||
| 21 | DataStorage, | ||
| 22 | Debugging, | ||
| 23 | DebuggingGraphics, | ||
| 24 | Miscellaneous, | ||
| 25 | Network, | ||
| 26 | WebService, | ||
| 27 | AddOns, | ||
| 28 | Controls, | ||
| 29 | Ui, | ||
| 30 | UiGeneral, | ||
| 31 | UiLayout, | ||
| 32 | UiGameList, | ||
| 33 | Screenshots, | ||
| 34 | Shortcuts, | ||
| 35 | Multiplayer, | ||
| 36 | Services, | ||
| 37 | Paths, | ||
| 38 | MaxEnum | ||
| 39 | } | ||
| 40 | |||
| 41 | val settingsList = listOf<AbstractSetting>( | ||
| 42 | *BooleanSetting.values(), | ||
| 43 | *ByteSetting.values(), | ||
| 44 | *ShortSetting.values(), | ||
| 45 | *IntSetting.values(), | ||
| 46 | *FloatSetting.values(), | ||
| 47 | *LongSetting.values(), | ||
| 48 | *StringSetting.values() | ||
| 49 | ) | ||
| 50 | |||
| 51 | const val SECTION_GENERAL = "General" | ||
| 52 | const val SECTION_SYSTEM = "System" | ||
| 53 | const val SECTION_RENDERER = "Renderer" | ||
| 54 | const val SECTION_AUDIO = "Audio" | ||
| 55 | const val SECTION_CPU = "Cpu" | ||
| 56 | const val SECTION_THEME = "Theme" | ||
| 57 | const val SECTION_DEBUG = "Debug" | ||
| 58 | |||
| 59 | enum class MenuTag(val titleId: Int) { | 9 | enum class MenuTag(val titleId: Int) { |
| 60 | SECTION_ROOT(R.string.advanced_settings), | 10 | SECTION_ROOT(R.string.advanced_settings), |
| 61 | SECTION_SYSTEM(R.string.preferences_system), | 11 | SECTION_SYSTEM(R.string.preferences_system), |
| 62 | SECTION_RENDERER(R.string.preferences_graphics), | 12 | SECTION_RENDERER(R.string.preferences_graphics), |
| 63 | SECTION_AUDIO(R.string.preferences_audio), | 13 | SECTION_AUDIO(R.string.preferences_audio), |
| 64 | SECTION_CPU(R.string.cpu), | ||
| 65 | SECTION_THEME(R.string.preferences_theme), | 14 | SECTION_THEME(R.string.preferences_theme), |
| 66 | SECTION_DEBUG(R.string.preferences_debug); | 15 | SECTION_DEBUG(R.string.preferences_debug); |
| 67 | } | 16 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt index c9a0c664c..16eb4ffdd 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt | |||
| @@ -5,21 +5,21 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class ShortSetting( | 8 | enum class ShortSetting(override val key: String) : AbstractShortSetting { |
| 9 | override val key: String, | 9 | RENDERER_SPEED_LIMIT("speed_limit"); |
| 10 | override val category: Settings.Category | ||
| 11 | ) : AbstractShortSetting { | ||
| 12 | RENDERER_SPEED_LIMIT("speed_limit", Settings.Category.Core); | ||
| 13 | 10 | ||
| 14 | override val short: Short | 11 | override fun getShort(needsGlobal: Boolean): Short = NativeConfig.getShort(key, needsGlobal) |
| 15 | get() = NativeConfig.getShort(key, false) | ||
| 16 | 12 | ||
| 17 | override fun setShort(value: Short) = NativeConfig.setShort(key, value) | 13 | override fun setShort(value: Short) { |
| 14 | if (NativeConfig.isPerGameConfigLoaded()) { | ||
| 15 | global = false | ||
| 16 | } | ||
| 17 | NativeConfig.setShort(key, value) | ||
| 18 | } | ||
| 18 | 19 | ||
| 19 | override val defaultValue: Short by lazy { NativeConfig.getShort(key, true) } | 20 | override val defaultValue: Short by lazy { NativeConfig.getDefaultToString(key).toShort() } |
| 20 | 21 | ||
| 21 | override val valueAsString: String | 22 | override fun getValueAsString(needsGlobal: Boolean): String = getShort(needsGlobal).toString() |
| 22 | get() = short.toString() | ||
| 23 | 23 | ||
| 24 | override fun reset() = NativeConfig.setShort(key, defaultValue) | 24 | override fun reset() = NativeConfig.setShort(key, defaultValue) |
| 25 | } | 25 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt index 9bb3e66d4..a0d8cfede 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt | |||
| @@ -5,22 +5,21 @@ package org.yuzu.yuzu_emu.features.settings.model | |||
| 5 | 5 | ||
| 6 | import org.yuzu.yuzu_emu.utils.NativeConfig | 6 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 7 | 7 | ||
| 8 | enum class StringSetting( | 8 | enum class StringSetting(override val key: String) : AbstractStringSetting { |
| 9 | override val key: String, | 9 | DRIVER_PATH("driver_path"); |
| 10 | override val category: Settings.Category | ||
| 11 | ) : AbstractStringSetting { | ||
| 12 | // No string settings currently exist | ||
| 13 | EMPTY_SETTING("", Settings.Category.UiGeneral); | ||
| 14 | 10 | ||
| 15 | override val string: String | 11 | override fun getString(needsGlobal: Boolean): String = NativeConfig.getString(key, needsGlobal) |
| 16 | get() = NativeConfig.getString(key, false) | ||
| 17 | 12 | ||
| 18 | override fun setString(value: String) = NativeConfig.setString(key, value) | 13 | override fun setString(value: String) { |
| 14 | if (NativeConfig.isPerGameConfigLoaded()) { | ||
| 15 | global = false | ||
| 16 | } | ||
| 17 | NativeConfig.setString(key, value) | ||
| 18 | } | ||
| 19 | 19 | ||
| 20 | override val defaultValue: String by lazy { NativeConfig.getString(key, true) } | 20 | override val defaultValue: String by lazy { NativeConfig.getDefaultToString(key) } |
| 21 | 21 | ||
| 22 | override val valueAsString: String | 22 | override fun getValueAsString(needsGlobal: Boolean): String = getString(needsGlobal) |
| 23 | get() = string | ||
| 24 | 23 | ||
| 25 | override fun reset() = NativeConfig.setString(key, defaultValue) | 24 | override fun reset() = NativeConfig.setString(key, defaultValue) |
| 26 | } | 25 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt index 8bc164197..1d81f5f2b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.kt | |||
| @@ -12,7 +12,6 @@ class DateTimeSetting( | |||
| 12 | ) : SettingsItem(longSetting, titleId, descriptionId) { | 12 | ) : SettingsItem(longSetting, titleId, descriptionId) { |
| 13 | override val type = TYPE_DATETIME_SETTING | 13 | override val type = TYPE_DATETIME_SETTING |
| 14 | 14 | ||
| 15 | var value: Long | 15 | fun getValue(needsGlobal: Boolean = false): Long = longSetting.getLong(needsGlobal) |
| 16 | get() = longSetting.long | 16 | fun setValue(value: Long) = (setting as AbstractLongSetting).setLong(value) |
| 17 | set(value) = (setting as AbstractLongSetting).setLong(value) | ||
| 18 | } | 17 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index e198b18a0..384527294 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt | |||
| @@ -11,7 +11,6 @@ import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting | |||
| 11 | import org.yuzu.yuzu_emu.features.settings.model.ByteSetting | 11 | import org.yuzu.yuzu_emu.features.settings.model.ByteSetting |
| 12 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting | 12 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting |
| 13 | import org.yuzu.yuzu_emu.features.settings.model.LongSetting | 13 | import org.yuzu.yuzu_emu.features.settings.model.LongSetting |
| 14 | import org.yuzu.yuzu_emu.features.settings.model.Settings | ||
| 15 | import org.yuzu.yuzu_emu.features.settings.model.ShortSetting | 14 | import org.yuzu.yuzu_emu.features.settings.model.ShortSetting |
| 16 | 15 | ||
| 17 | /** | 16 | /** |
| @@ -48,8 +47,8 @@ abstract class SettingsItem( | |||
| 48 | 47 | ||
| 49 | val emptySetting = object : AbstractSetting { | 48 | val emptySetting = object : AbstractSetting { |
| 50 | override val key: String = "" | 49 | override val key: String = "" |
| 51 | override val category: Settings.Category = Settings.Category.Ui | ||
| 52 | override val defaultValue: Any = false | 50 | override val defaultValue: Any = false |
| 51 | override fun getValueAsString(needsGlobal: Boolean): String = "" | ||
| 53 | override fun reset() {} | 52 | override fun reset() {} |
| 54 | } | 53 | } |
| 55 | 54 | ||
| @@ -270,9 +269,9 @@ abstract class SettingsItem( | |||
| 270 | ) | 269 | ) |
| 271 | 270 | ||
| 272 | val fastmem = object : AbstractBooleanSetting { | 271 | val fastmem = object : AbstractBooleanSetting { |
| 273 | override val boolean: Boolean | 272 | override fun getBoolean(needsGlobal: Boolean): Boolean = |
| 274 | get() = | 273 | BooleanSetting.FASTMEM.getBoolean() && |
| 275 | BooleanSetting.FASTMEM.boolean && BooleanSetting.FASTMEM_EXCLUSIVES.boolean | 274 | BooleanSetting.FASTMEM_EXCLUSIVES.getBoolean() |
| 276 | 275 | ||
| 277 | override fun setBoolean(value: Boolean) { | 276 | override fun setBoolean(value: Boolean) { |
| 278 | BooleanSetting.FASTMEM.setBoolean(value) | 277 | BooleanSetting.FASTMEM.setBoolean(value) |
| @@ -280,9 +279,22 @@ abstract class SettingsItem( | |||
| 280 | } | 279 | } |
| 281 | 280 | ||
| 282 | override val key: String = FASTMEM_COMBINED | 281 | override val key: String = FASTMEM_COMBINED |
| 283 | override val category = Settings.Category.Cpu | ||
| 284 | override val isRuntimeModifiable: Boolean = false | 282 | override val isRuntimeModifiable: Boolean = false |
| 285 | override val defaultValue: Boolean = true | 283 | override val defaultValue: Boolean = true |
| 284 | override val isSwitchable: Boolean = true | ||
| 285 | override var global: Boolean | ||
| 286 | get() { | ||
| 287 | return BooleanSetting.FASTMEM.global && | ||
| 288 | BooleanSetting.FASTMEM_EXCLUSIVES.global | ||
| 289 | } | ||
| 290 | set(value) { | ||
| 291 | BooleanSetting.FASTMEM.global = value | ||
| 292 | BooleanSetting.FASTMEM_EXCLUSIVES.global = value | ||
| 293 | } | ||
| 294 | |||
| 295 | override fun getValueAsString(needsGlobal: Boolean): String = | ||
| 296 | getBoolean().toString() | ||
| 297 | |||
| 286 | override fun reset() = setBoolean(defaultValue) | 298 | override fun reset() = setBoolean(defaultValue) |
| 287 | } | 299 | } |
| 288 | put(SwitchSetting(fastmem, R.string.fastmem, 0)) | 300 | put(SwitchSetting(fastmem, R.string.fastmem, 0)) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt index 705527a73..97a5a9e59 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.kt | |||
| @@ -15,16 +15,11 @@ class SingleChoiceSetting( | |||
| 15 | ) : SettingsItem(setting, titleId, descriptionId) { | 15 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 16 | override val type = TYPE_SINGLE_CHOICE | 16 | override val type = TYPE_SINGLE_CHOICE |
| 17 | 17 | ||
| 18 | var selectedValue: Int | 18 | fun getSelectedValue(needsGlobal: Boolean = false) = |
| 19 | get() { | 19 | when (setting) { |
| 20 | return when (setting) { | 20 | is AbstractIntSetting -> setting.getInt(needsGlobal) |
| 21 | is AbstractIntSetting -> setting.int | 21 | else -> -1 |
| 22 | else -> -1 | ||
| 23 | } | ||
| 24 | } | ||
| 25 | set(value) { | ||
| 26 | when (setting) { | ||
| 27 | is AbstractIntSetting -> setting.setInt(value) | ||
| 28 | } | ||
| 29 | } | 22 | } |
| 23 | |||
| 24 | fun setSelectedValue(value: Int) = (setting as AbstractIntSetting).setInt(value) | ||
| 30 | } | 25 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt index c3b5df02c..b9b709bf7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.kt | |||
| @@ -20,22 +20,20 @@ class SliderSetting( | |||
| 20 | ) : SettingsItem(setting, titleId, descriptionId) { | 20 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 21 | override val type = TYPE_SLIDER | 21 | override val type = TYPE_SLIDER |
| 22 | 22 | ||
| 23 | var selectedValue: Int | 23 | fun getSelectedValue(needsGlobal: Boolean = false) = |
| 24 | get() { | 24 | when (setting) { |
| 25 | return when (setting) { | 25 | is AbstractByteSetting -> setting.getByte(needsGlobal).toInt() |
| 26 | is AbstractByteSetting -> setting.byte.toInt() | 26 | is AbstractShortSetting -> setting.getShort(needsGlobal).toInt() |
| 27 | is AbstractShortSetting -> setting.short.toInt() | 27 | is AbstractIntSetting -> setting.getInt(needsGlobal) |
| 28 | is AbstractIntSetting -> setting.int | 28 | is AbstractFloatSetting -> setting.getFloat(needsGlobal).roundToInt() |
| 29 | is AbstractFloatSetting -> setting.float.roundToInt() | 29 | else -> -1 |
| 30 | else -> -1 | ||
| 31 | } | ||
| 32 | } | 30 | } |
| 33 | set(value) { | 31 | |
| 34 | when (setting) { | 32 | fun setSelectedValue(value: Int) = |
| 35 | is AbstractByteSetting -> setting.setByte(value.toByte()) | 33 | when (setting) { |
| 36 | is AbstractShortSetting -> setting.setShort(value.toShort()) | 34 | is AbstractByteSetting -> setting.setByte(value.toByte()) |
| 37 | is AbstractIntSetting -> setting.setInt(value) | 35 | is AbstractShortSetting -> setting.setShort(value.toShort()) |
| 38 | is AbstractFloatSetting -> setting.setFloat(value.toFloat()) | 36 | is AbstractFloatSetting -> setting.setFloat(value.toFloat()) |
| 39 | } | 37 | else -> (setting as AbstractIntSetting).setInt(value) |
| 40 | } | 38 | } |
| 41 | } | 39 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt index 871dab4f3..ba7920f50 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.kt | |||
| @@ -17,14 +17,13 @@ class StringSingleChoiceSetting( | |||
| 17 | fun getValueAt(index: Int): String = | 17 | fun getValueAt(index: Int): String = |
| 18 | if (index >= 0 && index < values.size) values[index] else "" | 18 | if (index >= 0 && index < values.size) values[index] else "" |
| 19 | 19 | ||
| 20 | var selectedValue: String | 20 | fun getSelectedValue(needsGlobal: Boolean = false) = stringSetting.getString(needsGlobal) |
| 21 | get() = stringSetting.string | 21 | fun setSelectedValue(value: String) = stringSetting.setString(value) |
| 22 | set(value) = stringSetting.setString(value) | ||
| 23 | 22 | ||
| 24 | val selectValueIndex: Int | 23 | val selectValueIndex: Int |
| 25 | get() { | 24 | get() { |
| 26 | for (i in values.indices) { | 25 | for (i in values.indices) { |
| 27 | if (values[i] == selectedValue) { | 26 | if (values[i] == getSelectedValue()) { |
| 28 | return i | 27 | return i |
| 29 | } | 28 | } |
| 30 | } | 29 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt index 416967e64..44d47dd69 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt | |||
| @@ -14,18 +14,18 @@ class SwitchSetting( | |||
| 14 | ) : SettingsItem(setting, titleId, descriptionId) { | 14 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 15 | override val type = TYPE_SWITCH | 15 | override val type = TYPE_SWITCH |
| 16 | 16 | ||
| 17 | var checked: Boolean | 17 | fun getIsChecked(needsGlobal: Boolean = false): Boolean { |
| 18 | get() { | 18 | return when (setting) { |
| 19 | return when (setting) { | 19 | is AbstractIntSetting -> setting.getInt(needsGlobal) == 1 |
| 20 | is AbstractIntSetting -> setting.int == 1 | 20 | is AbstractBooleanSetting -> setting.getBoolean(needsGlobal) |
| 21 | is AbstractBooleanSetting -> setting.boolean | 21 | else -> false |
| 22 | else -> false | ||
| 23 | } | ||
| 24 | } | 22 | } |
| 25 | set(value) { | 23 | } |
| 26 | when (setting) { | 24 | |
| 27 | is AbstractIntSetting -> setting.setInt(if (value) 1 else 0) | 25 | fun setChecked(value: Boolean) { |
| 28 | is AbstractBooleanSetting -> setting.setBoolean(value) | 26 | when (setting) { |
| 29 | } | 27 | is AbstractIntSetting -> setting.setInt(if (value) 1 else 0) |
| 28 | is AbstractBooleanSetting -> setting.setBoolean(value) | ||
| 30 | } | 29 | } |
| 30 | } | ||
| 31 | } | 31 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt index af2c1e582..3f23c064e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt | |||
| @@ -102,8 +102,9 @@ class SettingsAdapter( | |||
| 102 | return currentList[position].type | 102 | return currentList[position].type |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | fun onBooleanClick(item: SwitchSetting, checked: Boolean) { | 105 | fun onBooleanClick(item: SwitchSetting, checked: Boolean, position: Int) { |
| 106 | item.checked = checked | 106 | item.setChecked(checked) |
| 107 | notifyItemChanged(position) | ||
| 107 | settingsViewModel.setShouldReloadSettingsList(true) | 108 | settingsViewModel.setShouldReloadSettingsList(true) |
| 108 | } | 109 | } |
| 109 | 110 | ||
| @@ -126,7 +127,7 @@ class SettingsAdapter( | |||
| 126 | } | 127 | } |
| 127 | 128 | ||
| 128 | fun onDateTimeClick(item: DateTimeSetting, position: Int) { | 129 | fun onDateTimeClick(item: DateTimeSetting, position: Int) { |
| 129 | val storedTime = item.value * 1000 | 130 | val storedTime = item.getValue() * 1000 |
| 130 | 131 | ||
| 131 | // Helper to extract hour and minute from epoch time | 132 | // Helper to extract hour and minute from epoch time |
| 132 | val calendar: Calendar = Calendar.getInstance() | 133 | val calendar: Calendar = Calendar.getInstance() |
| @@ -159,9 +160,9 @@ class SettingsAdapter( | |||
| 159 | var epochTime: Long = datePicker.selection!! / 1000 | 160 | var epochTime: Long = datePicker.selection!! / 1000 |
| 160 | epochTime += timePicker.hour.toLong() * 60 * 60 | 161 | epochTime += timePicker.hour.toLong() * 60 * 60 |
| 161 | epochTime += timePicker.minute.toLong() * 60 | 162 | epochTime += timePicker.minute.toLong() * 60 |
| 162 | if (item.value != epochTime) { | 163 | if (item.getValue() != epochTime) { |
| 163 | notifyItemChanged(position) | 164 | notifyItemChanged(position) |
| 164 | item.value = epochTime | 165 | item.setValue(epochTime) |
| 165 | } | 166 | } |
| 166 | } | 167 | } |
| 167 | datePicker.show( | 168 | datePicker.show( |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 7425728c6..12a389b37 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt | |||
| @@ -36,7 +36,14 @@ class SettingsFragmentPresenter( | |||
| 36 | val item = SettingsItem.settingsItems[key]!! | 36 | val item = SettingsItem.settingsItems[key]!! |
| 37 | val pairedSettingKey = item.setting.pairedSettingKey | 37 | val pairedSettingKey = item.setting.pairedSettingKey |
| 38 | if (pairedSettingKey.isNotEmpty()) { | 38 | if (pairedSettingKey.isNotEmpty()) { |
| 39 | val pairedSettingValue = NativeConfig.getBoolean(pairedSettingKey, false) | 39 | val pairedSettingValue = NativeConfig.getBoolean( |
| 40 | pairedSettingKey, | ||
| 41 | if (NativeLibrary.isRunning() && !NativeConfig.isPerGameConfigLoaded()) { | ||
| 42 | !NativeConfig.usingGlobal(pairedSettingKey) | ||
| 43 | } else { | ||
| 44 | NativeConfig.usingGlobal(pairedSettingKey) | ||
| 45 | } | ||
| 46 | ) | ||
| 40 | if (!pairedSettingValue) return | 47 | if (!pairedSettingValue) return |
| 41 | } | 48 | } |
| 42 | add(item) | 49 | add(item) |
| @@ -153,8 +160,8 @@ class SettingsFragmentPresenter( | |||
| 153 | private fun addThemeSettings(sl: ArrayList<SettingsItem>) { | 160 | private fun addThemeSettings(sl: ArrayList<SettingsItem>) { |
| 154 | sl.apply { | 161 | sl.apply { |
| 155 | val theme: AbstractIntSetting = object : AbstractIntSetting { | 162 | val theme: AbstractIntSetting = object : AbstractIntSetting { |
| 156 | override val int: Int | 163 | override fun getInt(needsGlobal: Boolean): Int = |
| 157 | get() = preferences.getInt(Settings.PREF_THEME, 0) | 164 | preferences.getInt(Settings.PREF_THEME, 0) |
| 158 | 165 | ||
| 159 | override fun setInt(value: Int) { | 166 | override fun setInt(value: Int) { |
| 160 | preferences.edit() | 167 | preferences.edit() |
| @@ -164,8 +171,8 @@ class SettingsFragmentPresenter( | |||
| 164 | } | 171 | } |
| 165 | 172 | ||
| 166 | override val key: String = Settings.PREF_THEME | 173 | override val key: String = Settings.PREF_THEME |
| 167 | override val category = Settings.Category.UiGeneral | ||
| 168 | override val isRuntimeModifiable: Boolean = false | 174 | override val isRuntimeModifiable: Boolean = false |
| 175 | override fun getValueAsString(needsGlobal: Boolean): String = getInt().toString() | ||
| 169 | override val defaultValue: Int = 0 | 176 | override val defaultValue: Int = 0 |
| 170 | override fun reset() { | 177 | override fun reset() { |
| 171 | preferences.edit() | 178 | preferences.edit() |
| @@ -197,8 +204,8 @@ class SettingsFragmentPresenter( | |||
| 197 | } | 204 | } |
| 198 | 205 | ||
| 199 | val themeMode: AbstractIntSetting = object : AbstractIntSetting { | 206 | val themeMode: AbstractIntSetting = object : AbstractIntSetting { |
| 200 | override val int: Int | 207 | override fun getInt(needsGlobal: Boolean): Int = |
| 201 | get() = preferences.getInt(Settings.PREF_THEME_MODE, -1) | 208 | preferences.getInt(Settings.PREF_THEME_MODE, -1) |
| 202 | 209 | ||
| 203 | override fun setInt(value: Int) { | 210 | override fun setInt(value: Int) { |
| 204 | preferences.edit() | 211 | preferences.edit() |
| @@ -208,8 +215,8 @@ class SettingsFragmentPresenter( | |||
| 208 | } | 215 | } |
| 209 | 216 | ||
| 210 | override val key: String = Settings.PREF_THEME_MODE | 217 | override val key: String = Settings.PREF_THEME_MODE |
| 211 | override val category = Settings.Category.UiGeneral | ||
| 212 | override val isRuntimeModifiable: Boolean = false | 218 | override val isRuntimeModifiable: Boolean = false |
| 219 | override fun getValueAsString(needsGlobal: Boolean): String = getInt().toString() | ||
| 213 | override val defaultValue: Int = -1 | 220 | override val defaultValue: Int = -1 |
| 214 | override fun reset() { | 221 | override fun reset() { |
| 215 | preferences.edit() | 222 | preferences.edit() |
| @@ -230,8 +237,8 @@ class SettingsFragmentPresenter( | |||
| 230 | ) | 237 | ) |
| 231 | 238 | ||
| 232 | val blackBackgrounds: AbstractBooleanSetting = object : AbstractBooleanSetting { | 239 | val blackBackgrounds: AbstractBooleanSetting = object : AbstractBooleanSetting { |
| 233 | override val boolean: Boolean | 240 | override fun getBoolean(needsGlobal: Boolean): Boolean = |
| 234 | get() = preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) | 241 | preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) |
| 235 | 242 | ||
| 236 | override fun setBoolean(value: Boolean) { | 243 | override fun setBoolean(value: Boolean) { |
| 237 | preferences.edit() | 244 | preferences.edit() |
| @@ -241,8 +248,10 @@ class SettingsFragmentPresenter( | |||
| 241 | } | 248 | } |
| 242 | 249 | ||
| 243 | override val key: String = Settings.PREF_BLACK_BACKGROUNDS | 250 | override val key: String = Settings.PREF_BLACK_BACKGROUNDS |
| 244 | override val category = Settings.Category.UiGeneral | ||
| 245 | override val isRuntimeModifiable: Boolean = false | 251 | override val isRuntimeModifiable: Boolean = false |
| 252 | override fun getValueAsString(needsGlobal: Boolean): String = | ||
| 253 | getBoolean().toString() | ||
| 254 | |||
| 246 | override val defaultValue: Boolean = false | 255 | override val defaultValue: Boolean = false |
| 247 | override fun reset() { | 256 | override fun reset() { |
| 248 | preferences.edit() | 257 | preferences.edit() |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index 525f013f8..4e159a799 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt | |||
| @@ -29,7 +29,7 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | binding.textSettingValue.visibility = View.VISIBLE | 31 | binding.textSettingValue.visibility = View.VISIBLE |
| 32 | val epochTime = setting.value | 32 | val epochTime = setting.getValue() |
| 33 | val instant = Instant.ofEpochMilli(epochTime * 1000) | 33 | val instant = Instant.ofEpochMilli(epochTime * 1000) |
| 34 | val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) | 34 | val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) |
| 35 | val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) | 35 | val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index 80d1b22c1..28c4d1777 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt | |||
| @@ -29,14 +29,14 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 29 | val resMgr = binding.textSettingValue.context.resources | 29 | val resMgr = binding.textSettingValue.context.resources |
| 30 | val values = resMgr.getIntArray(item.valuesId) | 30 | val values = resMgr.getIntArray(item.valuesId) |
| 31 | for (i in values.indices) { | 31 | for (i in values.indices) { |
| 32 | if (values[i] == item.selectedValue) { | 32 | if (values[i] == item.getSelectedValue()) { |
| 33 | binding.textSettingValue.text = resMgr.getStringArray(item.choicesId)[i] | 33 | binding.textSettingValue.text = resMgr.getStringArray(item.choicesId)[i] |
| 34 | break | 34 | break |
| 35 | } | 35 | } |
| 36 | } | 36 | } |
| 37 | } else if (item is StringSingleChoiceSetting) { | 37 | } else if (item is StringSingleChoiceSetting) { |
| 38 | for (i in item.values.indices) { | 38 | for (i in item.values.indices) { |
| 39 | if (item.values[i] == item.selectedValue) { | 39 | if (item.values[i] == item.getSelectedValue()) { |
| 40 | binding.textSettingValue.text = item.choices[i] | 40 | binding.textSettingValue.text = item.choices[i] |
| 41 | break | 41 | break |
| 42 | } | 42 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt index b83c90100..67432f88e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt | |||
| @@ -26,7 +26,7 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda | |||
| 26 | binding.textSettingValue.visibility = View.VISIBLE | 26 | binding.textSettingValue.visibility = View.VISIBLE |
| 27 | binding.textSettingValue.text = String.format( | 27 | binding.textSettingValue.text = String.format( |
| 28 | binding.textSettingValue.context.getString(R.string.value_with_units), | 28 | binding.textSettingValue.context.getString(R.string.value_with_units), |
| 29 | setting.selectedValue, | 29 | setting.getSelectedValue(), |
| 30 | setting.units | 30 | setting.units |
| 31 | ) | 31 | ) |
| 32 | 32 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index 57fdeaa20..98ed888cb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt | |||
| @@ -27,7 +27,7 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter | |||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | binding.switchWidget.setOnCheckedChangeListener(null) | 29 | binding.switchWidget.setOnCheckedChangeListener(null) |
| 30 | binding.switchWidget.isChecked = setting.checked | 30 | binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal) |
| 31 | binding.switchWidget.setOnCheckedChangeListener { _: CompoundButton, _: Boolean -> | 31 | binding.switchWidget.setOnCheckedChangeListener { _: CompoundButton, _: Boolean -> |
| 32 | adapter.onBooleanClick(item, binding.switchWidget.isChecked) | 32 | adapter.onBooleanClick(item, binding.switchWidget.isChecked) |
| 33 | } | 33 | } |
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 734c1d5ca..b09df7db3 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 | |||
| @@ -435,7 +435,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 435 | @SuppressLint("SourceLockedOrientationActivity") | 435 | @SuppressLint("SourceLockedOrientationActivity") |
| 436 | private fun updateOrientation() { | 436 | private fun updateOrientation() { |
| 437 | emulationActivity?.let { | 437 | emulationActivity?.let { |
| 438 | it.requestedOrientation = when (IntSetting.RENDERER_SCREEN_LAYOUT.int) { | 438 | it.requestedOrientation = when (IntSetting.RENDERER_SCREEN_LAYOUT.getInt()) { |
| 439 | Settings.LayoutOption_MobileLandscape -> | 439 | Settings.LayoutOption_MobileLandscape -> |
| 440 | ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE | 440 | ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE |
| 441 | Settings.LayoutOption_MobilePortrait -> | 441 | Settings.LayoutOption_MobilePortrait -> |
| @@ -617,7 +617,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 617 | @SuppressLint("SourceLockedOrientationActivity") | 617 | @SuppressLint("SourceLockedOrientationActivity") |
| 618 | private fun startConfiguringControls() { | 618 | private fun startConfiguringControls() { |
| 619 | // Lock the current orientation to prevent editing inconsistencies | 619 | // Lock the current orientation to prevent editing inconsistencies |
| 620 | if (IntSetting.RENDERER_SCREEN_LAYOUT.int == Settings.LayoutOption_Unspecified) { | 620 | if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == Settings.LayoutOption_Unspecified) { |
| 621 | emulationActivity?.let { | 621 | emulationActivity?.let { |
| 622 | it.requestedOrientation = | 622 | it.requestedOrientation = |
| 623 | if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { | 623 | if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { |
| @@ -635,7 +635,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 635 | binding.doneControlConfig.visibility = View.GONE | 635 | binding.doneControlConfig.visibility = View.GONE |
| 636 | binding.surfaceInputOverlay.setIsInEditMode(false) | 636 | binding.surfaceInputOverlay.setIsInEditMode(false) |
| 637 | // Unlock the orientation if it was locked for editing | 637 | // Unlock the orientation if it was locked for editing |
| 638 | if (IntSetting.RENDERER_SCREEN_LAYOUT.int == Settings.LayoutOption_Unspecified) { | 638 | if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == Settings.LayoutOption_Unspecified) { |
| 639 | emulationActivity?.let { | 639 | emulationActivity?.let { |
| 640 | it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED | 640 | it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED |
| 641 | } | 641 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SettingsDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SettingsDialogFragment.kt index b88d2c038..60e029f34 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SettingsDialogFragment.kt | |||
| @@ -70,7 +70,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||
| 70 | sliderBinding = DialogSliderBinding.inflate(layoutInflater) | 70 | sliderBinding = DialogSliderBinding.inflate(layoutInflater) |
| 71 | val item = settingsViewModel.clickedItem as SliderSetting | 71 | val item = settingsViewModel.clickedItem as SliderSetting |
| 72 | 72 | ||
| 73 | settingsViewModel.setSliderTextValue(item.selectedValue.toFloat(), item.units) | 73 | settingsViewModel.setSliderTextValue(item.getSelectedValue().toFloat(), item.units) |
| 74 | sliderBinding.slider.apply { | 74 | sliderBinding.slider.apply { |
| 75 | valueFrom = item.min.toFloat() | 75 | valueFrom = item.min.toFloat() |
| 76 | valueTo = item.max.toFloat() | 76 | valueTo = item.max.toFloat() |
| @@ -136,18 +136,18 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||
| 136 | is SingleChoiceSetting -> { | 136 | is SingleChoiceSetting -> { |
| 137 | val scSetting = settingsViewModel.clickedItem as SingleChoiceSetting | 137 | val scSetting = settingsViewModel.clickedItem as SingleChoiceSetting |
| 138 | val value = getValueForSingleChoiceSelection(scSetting, which) | 138 | val value = getValueForSingleChoiceSelection(scSetting, which) |
| 139 | scSetting.selectedValue = value | 139 | scSetting.setSelectedValue(value) |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | is StringSingleChoiceSetting -> { | 142 | is StringSingleChoiceSetting -> { |
| 143 | val scSetting = settingsViewModel.clickedItem as StringSingleChoiceSetting | 143 | val scSetting = settingsViewModel.clickedItem as StringSingleChoiceSetting |
| 144 | val value = scSetting.getValueAt(which) | 144 | val value = scSetting.getValueAt(which) |
| 145 | scSetting.selectedValue = value | 145 | scSetting.setSelectedValue(value) |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | is SliderSetting -> { | 148 | is SliderSetting -> { |
| 149 | val sliderSetting = settingsViewModel.clickedItem as SliderSetting | 149 | val sliderSetting = settingsViewModel.clickedItem as SliderSetting |
| 150 | sliderSetting.selectedValue = settingsViewModel.sliderProgress.value | 150 | sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value) |
| 151 | } | 151 | } |
| 152 | } | 152 | } |
| 153 | closeDialog() | 153 | closeDialog() |
| @@ -171,7 +171,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | private fun getSelectionForSingleChoiceValue(item: SingleChoiceSetting): Int { | 173 | private fun getSelectionForSingleChoiceValue(item: SingleChoiceSetting): Int { |
| 174 | val value = item.selectedValue | 174 | val value = item.getSelectedValue() |
| 175 | val valuesId = item.valuesId | 175 | val valuesId = item.valuesId |
| 176 | if (valuesId > 0) { | 176 | if (valuesId > 0) { |
| 177 | val valuesArray = requireContext().resources.getIntArray(valuesId) | 177 | val valuesArray = requireContext().resources.getIntArray(valuesId) |
| @@ -211,7 +211,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||
| 211 | throw IllegalArgumentException("[SettingsDialogFragment] Incompatible type!") | 211 | throw IllegalArgumentException("[SettingsDialogFragment] Incompatible type!") |
| 212 | 212 | ||
| 213 | SettingsItem.TYPE_SLIDER -> settingsViewModel.setSliderProgress( | 213 | SettingsItem.TYPE_SLIDER -> settingsViewModel.setSliderProgress( |
| 214 | (clickedItem as SliderSetting).selectedValue.toFloat() | 214 | (clickedItem as SliderSetting).getSelectedValue().toFloat() |
| 215 | ) | 215 | ) |
| 216 | } | 216 | } |
| 217 | settingsViewModel.clickedItem = clickedItem | 217 | settingsViewModel.clickedItem = clickedItem |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt index f4e1bb13f..4c7316ba3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt | |||
| @@ -31,32 +31,63 @@ object NativeConfig { | |||
| 31 | external fun saveSettings() | 31 | external fun saveSettings() |
| 32 | 32 | ||
| 33 | external fun getBoolean(key: String, getDefault: Boolean): Boolean | 33 | external fun getBoolean(key: String, getDefault: Boolean): Boolean |
| 34 | |||
| 35 | @Synchronized | ||
| 36 | external fun getBoolean(key: String, needsGlobal: Boolean): Boolean | ||
| 37 | |||
| 38 | @Synchronized | ||
| 34 | external fun setBoolean(key: String, value: Boolean) | 39 | external fun setBoolean(key: String, value: Boolean) |
| 35 | 40 | ||
| 36 | external fun getByte(key: String, getDefault: Boolean): Byte | 41 | @Synchronized |
| 42 | external fun getByte(key: String, needsGlobal: Boolean): Byte | ||
| 43 | |||
| 44 | @Synchronized | ||
| 37 | external fun setByte(key: String, value: Byte) | 45 | external fun setByte(key: String, value: Byte) |
| 38 | 46 | ||
| 39 | external fun getShort(key: String, getDefault: Boolean): Short | 47 | @Synchronized |
| 48 | external fun getShort(key: String, needsGlobal: Boolean): Short | ||
| 49 | |||
| 50 | @Synchronized | ||
| 40 | external fun setShort(key: String, value: Short) | 51 | external fun setShort(key: String, value: Short) |
| 41 | 52 | ||
| 42 | external fun getInt(key: String, getDefault: Boolean): Int | 53 | @Synchronized |
| 54 | external fun getInt(key: String, needsGlobal: Boolean): Int | ||
| 55 | |||
| 56 | @Synchronized | ||
| 43 | external fun setInt(key: String, value: Int) | 57 | external fun setInt(key: String, value: Int) |
| 44 | 58 | ||
| 45 | external fun getFloat(key: String, getDefault: Boolean): Float | 59 | @Synchronized |
| 60 | external fun getFloat(key: String, needsGlobal: Boolean): Float | ||
| 61 | |||
| 62 | @Synchronized | ||
| 46 | external fun setFloat(key: String, value: Float) | 63 | external fun setFloat(key: String, value: Float) |
| 47 | 64 | ||
| 48 | external fun getLong(key: String, getDefault: Boolean): Long | 65 | @Synchronized |
| 66 | external fun getLong(key: String, needsGlobal: Boolean): Long | ||
| 67 | |||
| 68 | @Synchronized | ||
| 49 | external fun setLong(key: String, value: Long) | 69 | external fun setLong(key: String, value: Long) |
| 50 | 70 | ||
| 51 | external fun getString(key: String, getDefault: Boolean): String | 71 | @Synchronized |
| 72 | external fun getString(key: String, needsGlobal: Boolean): String | ||
| 73 | |||
| 74 | @Synchronized | ||
| 52 | external fun setString(key: String, value: String) | 75 | external fun setString(key: String, value: String) |
| 53 | 76 | ||
| 54 | external fun getIsRuntimeModifiable(key: String): Boolean | 77 | external fun getIsRuntimeModifiable(key: String): Boolean |
| 55 | 78 | ||
| 56 | external fun getConfigHeader(category: Int): String | ||
| 57 | |||
| 58 | external fun getPairedSettingKey(key: String): String | 79 | external fun getPairedSettingKey(key: String): String |
| 59 | 80 | ||
| 81 | external fun getIsSwitchable(key: String): Boolean | ||
| 82 | |||
| 83 | @Synchronized | ||
| 84 | external fun usingGlobal(key: String): Boolean | ||
| 85 | |||
| 86 | @Synchronized | ||
| 87 | external fun setGlobal(key: String, global: Boolean) | ||
| 88 | |||
| 89 | external fun getDefaultToString(key: String): String | ||
| 90 | |||
| 60 | /** | 91 | /** |
| 61 | * Gets every [GameDir] in AndroidSettings::values.game_dirs | 92 | * Gets every [GameDir] in AndroidSettings::values.game_dirs |
| 62 | */ | 93 | */ |
diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 763b2164c..9439d11e1 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp | |||
| @@ -49,18 +49,12 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_saveSettings(JNIEnv* env, jobjec | |||
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getBoolean(JNIEnv* env, jobject obj, | 51 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getBoolean(JNIEnv* env, jobject obj, |
| 52 | jstring jkey, jboolean getDefault) { | 52 | jstring jkey, jboolean needGlobal) { |
| 53 | auto setting = getSetting<bool>(env, jkey); | 53 | auto setting = getSetting<bool>(env, jkey); |
| 54 | if (setting == nullptr) { | 54 | if (setting == nullptr) { |
| 55 | return false; | 55 | return false; |
| 56 | } | 56 | } |
| 57 | setting->SetGlobal(true); | 57 | return setting->GetValue(static_cast<bool>(needGlobal)); |
| 58 | |||
| 59 | if (static_cast<bool>(getDefault)) { | ||
| 60 | return setting->GetDefault(); | ||
| 61 | } | ||
| 62 | |||
| 63 | return setting->GetValue(); | ||
| 64 | } | 58 | } |
| 65 | 59 | ||
| 66 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject obj, jstring jkey, | 60 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -69,23 +63,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject | |||
| 69 | if (setting == nullptr) { | 63 | if (setting == nullptr) { |
| 70 | return; | 64 | return; |
| 71 | } | 65 | } |
| 72 | setting->SetGlobal(true); | ||
| 73 | setting->SetValue(static_cast<bool>(value)); | 66 | setting->SetValue(static_cast<bool>(value)); |
| 74 | } | 67 | } |
| 75 | 68 | ||
| 76 | jbyte Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getByte(JNIEnv* env, jobject obj, jstring jkey, | 69 | jbyte Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getByte(JNIEnv* env, jobject obj, jstring jkey, |
| 77 | jboolean getDefault) { | 70 | jboolean needGlobal) { |
| 78 | auto setting = getSetting<u8>(env, jkey); | 71 | auto setting = getSetting<u8>(env, jkey); |
| 79 | if (setting == nullptr) { | 72 | if (setting == nullptr) { |
| 80 | return -1; | 73 | return -1; |
| 81 | } | 74 | } |
| 82 | setting->SetGlobal(true); | 75 | return setting->GetValue(static_cast<bool>(needGlobal)); |
| 83 | |||
| 84 | if (static_cast<bool>(getDefault)) { | ||
| 85 | return setting->GetDefault(); | ||
| 86 | } | ||
| 87 | |||
| 88 | return setting->GetValue(); | ||
| 89 | } | 76 | } |
| 90 | 77 | ||
| 91 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj, jstring jkey, | 78 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -94,23 +81,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj | |||
| 94 | if (setting == nullptr) { | 81 | if (setting == nullptr) { |
| 95 | return; | 82 | return; |
| 96 | } | 83 | } |
| 97 | setting->SetGlobal(true); | ||
| 98 | setting->SetValue(value); | 84 | setting->SetValue(value); |
| 99 | } | 85 | } |
| 100 | 86 | ||
| 101 | jshort Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getShort(JNIEnv* env, jobject obj, jstring jkey, | 87 | jshort Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getShort(JNIEnv* env, jobject obj, jstring jkey, |
| 102 | jboolean getDefault) { | 88 | jboolean needGlobal) { |
| 103 | auto setting = getSetting<u16>(env, jkey); | 89 | auto setting = getSetting<u16>(env, jkey); |
| 104 | if (setting == nullptr) { | 90 | if (setting == nullptr) { |
| 105 | return -1; | 91 | return -1; |
| 106 | } | 92 | } |
| 107 | setting->SetGlobal(true); | 93 | return setting->GetValue(static_cast<bool>(needGlobal)); |
| 108 | |||
| 109 | if (static_cast<bool>(getDefault)) { | ||
| 110 | return setting->GetDefault(); | ||
| 111 | } | ||
| 112 | |||
| 113 | return setting->GetValue(); | ||
| 114 | } | 94 | } |
| 115 | 95 | ||
| 116 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject obj, jstring jkey, | 96 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -119,23 +99,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject ob | |||
| 119 | if (setting == nullptr) { | 99 | if (setting == nullptr) { |
| 120 | return; | 100 | return; |
| 121 | } | 101 | } |
| 122 | setting->SetGlobal(true); | ||
| 123 | setting->SetValue(value); | 102 | setting->SetValue(value); |
| 124 | } | 103 | } |
| 125 | 104 | ||
| 126 | jint Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, jstring jkey, | 105 | jint Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, jstring jkey, |
| 127 | jboolean getDefault) { | 106 | jboolean needGlobal) { |
| 128 | auto setting = getSetting<int>(env, jkey); | 107 | auto setting = getSetting<int>(env, jkey); |
| 129 | if (setting == nullptr) { | 108 | if (setting == nullptr) { |
| 130 | return -1; | 109 | return -1; |
| 131 | } | 110 | } |
| 132 | setting->SetGlobal(true); | 111 | return setting->GetValue(needGlobal); |
| 133 | |||
| 134 | if (static_cast<bool>(getDefault)) { | ||
| 135 | return setting->GetDefault(); | ||
| 136 | } | ||
| 137 | |||
| 138 | return setting->GetValue(); | ||
| 139 | } | 112 | } |
| 140 | 113 | ||
| 141 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, jstring jkey, | 114 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -144,23 +117,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, | |||
| 144 | if (setting == nullptr) { | 117 | if (setting == nullptr) { |
| 145 | return; | 118 | return; |
| 146 | } | 119 | } |
| 147 | setting->SetGlobal(true); | ||
| 148 | setting->SetValue(value); | 120 | setting->SetValue(value); |
| 149 | } | 121 | } |
| 150 | 122 | ||
| 151 | jfloat Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getFloat(JNIEnv* env, jobject obj, jstring jkey, | 123 | jfloat Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getFloat(JNIEnv* env, jobject obj, jstring jkey, |
| 152 | jboolean getDefault) { | 124 | jboolean needGlobal) { |
| 153 | auto setting = getSetting<float>(env, jkey); | 125 | auto setting = getSetting<float>(env, jkey); |
| 154 | if (setting == nullptr) { | 126 | if (setting == nullptr) { |
| 155 | return -1; | 127 | return -1; |
| 156 | } | 128 | } |
| 157 | setting->SetGlobal(true); | 129 | return setting->GetValue(static_cast<bool>(needGlobal)); |
| 158 | |||
| 159 | if (static_cast<bool>(getDefault)) { | ||
| 160 | return setting->GetDefault(); | ||
| 161 | } | ||
| 162 | |||
| 163 | return setting->GetValue(); | ||
| 164 | } | 130 | } |
| 165 | 131 | ||
| 166 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject obj, jstring jkey, | 132 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -169,23 +135,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject ob | |||
| 169 | if (setting == nullptr) { | 135 | if (setting == nullptr) { |
| 170 | return; | 136 | return; |
| 171 | } | 137 | } |
| 172 | setting->SetGlobal(true); | ||
| 173 | setting->SetValue(value); | 138 | setting->SetValue(value); |
| 174 | } | 139 | } |
| 175 | 140 | ||
| 176 | jlong Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getLong(JNIEnv* env, jobject obj, jstring jkey, | 141 | jlong Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getLong(JNIEnv* env, jobject obj, jstring jkey, |
| 177 | jboolean getDefault) { | 142 | jboolean needGlobal) { |
| 178 | auto setting = getSetting<long>(env, jkey); | 143 | auto setting = getSetting<s64>(env, jkey); |
| 179 | if (setting == nullptr) { | 144 | if (setting == nullptr) { |
| 180 | return -1; | 145 | return -1; |
| 181 | } | 146 | } |
| 182 | setting->SetGlobal(true); | 147 | return setting->GetValue(static_cast<bool>(needGlobal)); |
| 183 | |||
| 184 | if (static_cast<bool>(getDefault)) { | ||
| 185 | return setting->GetDefault(); | ||
| 186 | } | ||
| 187 | |||
| 188 | return setting->GetValue(); | ||
| 189 | } | 148 | } |
| 190 | 149 | ||
| 191 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj, jstring jkey, | 150 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -194,23 +153,16 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj | |||
| 194 | if (setting == nullptr) { | 153 | if (setting == nullptr) { |
| 195 | return; | 154 | return; |
| 196 | } | 155 | } |
| 197 | setting->SetGlobal(true); | ||
| 198 | setting->SetValue(value); | 156 | setting->SetValue(value); |
| 199 | } | 157 | } |
| 200 | 158 | ||
| 201 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getString(JNIEnv* env, jobject obj, jstring jkey, | 159 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getString(JNIEnv* env, jobject obj, jstring jkey, |
| 202 | jboolean getDefault) { | 160 | jboolean needGlobal) { |
| 203 | auto setting = getSetting<std::string>(env, jkey); | 161 | auto setting = getSetting<std::string>(env, jkey); |
| 204 | if (setting == nullptr) { | 162 | if (setting == nullptr) { |
| 205 | return ToJString(env, ""); | 163 | return ToJString(env, ""); |
| 206 | } | 164 | } |
| 207 | setting->SetGlobal(true); | 165 | return ToJString(env, setting->GetValue(static_cast<bool>(needGlobal))); |
| 208 | |||
| 209 | if (static_cast<bool>(getDefault)) { | ||
| 210 | return ToJString(env, setting->GetDefault()); | ||
| 211 | } | ||
| 212 | |||
| 213 | return ToJString(env, setting->GetValue()); | ||
| 214 | } | 166 | } |
| 215 | 167 | ||
| 216 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject obj, jstring jkey, | 168 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject obj, jstring jkey, |
| @@ -220,27 +172,18 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject o | |||
| 220 | return; | 172 | return; |
| 221 | } | 173 | } |
| 222 | 174 | ||
| 223 | setting->SetGlobal(true); | ||
| 224 | setting->SetValue(GetJString(env, value)); | 175 | setting->SetValue(GetJString(env, value)); |
| 225 | } | 176 | } |
| 226 | 177 | ||
| 227 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getIsRuntimeModifiable(JNIEnv* env, jobject obj, | 178 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getIsRuntimeModifiable(JNIEnv* env, jobject obj, |
| 228 | jstring jkey) { | 179 | jstring jkey) { |
| 229 | auto key = GetJString(env, jkey); | 180 | auto setting = getSetting<std::string>(env, jkey); |
| 230 | auto setting = Settings::values.linkage.by_key[key]; | 181 | if (setting != nullptr) { |
| 231 | if (setting != 0) { | ||
| 232 | return setting->RuntimeModfiable(); | 182 | return setting->RuntimeModfiable(); |
| 233 | } | 183 | } |
| 234 | LOG_ERROR(Frontend, "[Android Native] Could not find setting - {}", key); | ||
| 235 | return true; | 184 | return true; |
| 236 | } | 185 | } |
| 237 | 186 | ||
| 238 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getConfigHeader(JNIEnv* env, jobject obj, | ||
| 239 | jint jcategory) { | ||
| 240 | auto category = static_cast<Settings::Category>(jcategory); | ||
| 241 | return ToJString(env, Settings::TranslateCategory(category)); | ||
| 242 | } | ||
| 243 | |||
| 244 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* env, jobject obj, | 187 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* env, jobject obj, |
| 245 | jstring jkey) { | 188 | jstring jkey) { |
| 246 | auto setting = getSetting<std::string>(env, jkey); | 189 | auto setting = getSetting<std::string>(env, jkey); |
| @@ -254,6 +197,41 @@ jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* e | |||
| 254 | return ToJString(env, setting->PairedSetting()->GetLabel()); | 197 | return ToJString(env, setting->PairedSetting()->GetLabel()); |
| 255 | } | 198 | } |
| 256 | 199 | ||
| 200 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getIsSwitchable(JNIEnv* env, jobject obj, | ||
| 201 | jstring jkey) { | ||
| 202 | auto setting = getSetting<std::string>(env, jkey); | ||
| 203 | if (setting != nullptr) { | ||
| 204 | return setting->Switchable(); | ||
| 205 | } | ||
| 206 | return false; | ||
| 207 | } | ||
| 208 | |||
| 209 | jboolean Java_org_yuzu_yuzu_1emu_utils_NativeConfig_usingGlobal(JNIEnv* env, jobject obj, | ||
| 210 | jstring jkey) { | ||
| 211 | auto setting = getSetting<std::string>(env, jkey); | ||
| 212 | if (setting != nullptr) { | ||
| 213 | return setting->UsingGlobal(); | ||
| 214 | } | ||
| 215 | return true; | ||
| 216 | } | ||
| 217 | |||
| 218 | void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject obj, jstring jkey, | ||
| 219 | jboolean global) { | ||
| 220 | auto setting = getSetting<std::string>(env, jkey); | ||
| 221 | if (setting != nullptr) { | ||
| 222 | setting->SetGlobal(static_cast<bool>(global)); | ||
| 223 | } | ||
| 224 | } | ||
| 225 | |||
| 226 | jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj, | ||
| 227 | jstring jkey) { | ||
| 228 | auto setting = getSetting<std::string>(env, jkey); | ||
| 229 | if (setting != nullptr) { | ||
| 230 | return ToJString(env, setting->DefaultToString()); | ||
| 231 | } | ||
| 232 | return ToJString(env, ""); | ||
| 233 | } | ||
| 234 | |||
| 257 | jobjectArray Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getGameDirs(JNIEnv* env, jobject obj) { | 235 | jobjectArray Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getGameDirs(JNIEnv* env, jobject obj) { |
| 258 | jclass gameDirClass = IDCache::GetGameDirClass(); | 236 | jclass gameDirClass = IDCache::GetGameDirClass(); |
| 259 | jmethodID gameDirConstructor = IDCache::GetGameDirConstructor(); | 237 | jmethodID gameDirConstructor = IDCache::GetGameDirConstructor(); |
diff --git a/src/common/settings_setting.h b/src/common/settings_setting.h index 3175ab07d..0b18ca5ec 100644 --- a/src/common/settings_setting.h +++ b/src/common/settings_setting.h | |||
| @@ -81,6 +81,9 @@ public: | |||
| 81 | [[nodiscard]] virtual const Type& GetValue() const { | 81 | [[nodiscard]] virtual const Type& GetValue() const { |
| 82 | return value; | 82 | return value; |
| 83 | } | 83 | } |
| 84 | [[nodiscard]] virtual const Type& GetValue(bool need_global) const { | ||
| 85 | return value; | ||
| 86 | } | ||
| 84 | 87 | ||
| 85 | /** | 88 | /** |
| 86 | * Sets the setting to the given value. | 89 | * Sets the setting to the given value. |
| @@ -353,7 +356,7 @@ public: | |||
| 353 | } | 356 | } |
| 354 | return custom; | 357 | return custom; |
| 355 | } | 358 | } |
| 356 | [[nodiscard]] const Type& GetValue(bool need_global) const { | 359 | [[nodiscard]] const Type& GetValue(bool need_global) const override final { |
| 357 | if (use_global || need_global) { | 360 | if (use_global || need_global) { |
| 358 | return this->value; | 361 | return this->value; |
| 359 | } | 362 | } |