diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt index 94ddb295d..dc27ca2c5 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt @@ -10,6 +10,9 @@ enum class FloatSetting( override val defaultValue: Float ) : AbstractFloatSetting { LARGE_SCREEN_PROPORTION("large_screen_proportion",Settings.SECTION_LAYOUT,2.25f), + BACKGROUND_RED("bg_red", Settings.SECTION_RENDERER, 0f), + BACKGROUND_BLUE("bg_blue", Settings.SECTION_RENDERER, 0f), + BACKGROUND_GREEN("bg_green", Settings.SECTION_RENDERER, 0f), EMPTY_SETTING("", "", 0.0f); override var float: Float = defaultValue 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 28fb82e84..f43a6432b 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 @@ -1166,6 +1166,76 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) FloatSetting.LARGE_SCREEN_PROPORTION.defaultValue ) ) + add(HeaderSetting(R.string.bg_color, R.string.bg_color_description)) + val bgRedSetting = object : AbstractIntSetting { + override var int: Int + get() = (FloatSetting.BACKGROUND_RED.float * 255).toInt() + set(value) { + FloatSetting.BACKGROUND_RED.float = value.toFloat() / 255 + settings.saveSetting(FloatSetting.BACKGROUND_RED, SettingsFile.FILE_NAME_CONFIG) + } + override val key = null + override val section = null + override val isRuntimeEditable = false + override val valueAsString = int.toString() + override val defaultValue = FloatSetting.BACKGROUND_RED.defaultValue + } + add( + SliderSetting( + bgRedSetting, + R.string.bg_red, + 0, + 0, + 255, + "" + ) + ) + val bgGreenSetting = object : AbstractIntSetting { + override var int: Int + get() = (FloatSetting.BACKGROUND_GREEN.float * 255).toInt() + set(value) { + FloatSetting.BACKGROUND_GREEN.float = value.toFloat() / 255 + settings.saveSetting(FloatSetting.BACKGROUND_GREEN, SettingsFile.FILE_NAME_CONFIG) + } + override val key = null + override val section = null + override val isRuntimeEditable = false + override val valueAsString = int.toString() + override val defaultValue = FloatSetting.BACKGROUND_GREEN.defaultValue + } + add( + SliderSetting( + bgGreenSetting, + R.string.bg_green, + 0, + 0, + 255, + "" + ) + ) + val bgBlueSetting = object : AbstractIntSetting { + override var int: Int + get() = (FloatSetting.BACKGROUND_BLUE.float * 255).toInt() + set(value) { + FloatSetting.BACKGROUND_BLUE.float = value.toFloat() / 255 + settings.saveSetting(FloatSetting.BACKGROUND_BLUE, SettingsFile.FILE_NAME_CONFIG) + } + override val key = null + override val section = null + override val isRuntimeEditable = false + override val valueAsString = int.toString() + override val defaultValue = FloatSetting.BACKGROUND_BLUE.defaultValue + } + add( + SliderSetting( + bgBlueSetting, + R.string.bg_blue, + 0, + 0, + 255, + "" + ) + ) add( SubmenuSetting( R.string.performance_overlay_options, diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 9c6a6182c..2a4e6f567 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -448,6 +448,11 @@ Default System Default (mirror) Custom Layout + Background Color + The color which appears behind the screens during emulation, represented as an RGB value. + Red + Green + Blue Small Screen Position Where should the small screen appear relative to the large one in Large Screen Layout? Top Right