Fix options setting for the notifications scroll visibility being wrong for new installs (#11177)

This commit is contained in:
SomeTroglodyte 2024-02-22 16:34:29 +01:00 committed by GitHub
parent 382d966696
commit 52eae2a3f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 8 deletions

View File

@ -11,6 +11,7 @@ import com.unciv.ui.components.fonts.FontFamilyData
import com.unciv.ui.components.fonts.Fonts
import com.unciv.ui.components.input.KeyboardBindings
import com.unciv.ui.screens.overviewscreen.EmpireOverviewCategories
import com.unciv.ui.screens.worldscreen.NotificationsScroll
import com.unciv.utils.Display
import com.unciv.utils.ScreenOrientation
import java.text.Collator
@ -116,8 +117,9 @@ class GameSettings {
var keyBindings = KeyboardBindings()
/** NotificationScroll on Word Screen visibility control - mapped to NotificationsScroll.UserSetting enum */
var notificationScroll: String = ""
/** NotificationScroll on Word Screen visibility control - mapped to [NotificationsScroll.UserSetting] enum */
// Defaulting this to "" - and implement the fallback only in NotificationsScroll leads to Options popup and actual effect being in disagreement!
var notificationScroll: String = NotificationsScroll.UserSetting.default().name
/** If on, selected notifications are drawn enlarged with wider padding */
var enlargeSelectedNotification = true

View File

@ -13,15 +13,15 @@ import com.badlogic.gdx.utils.Align
import com.unciv.GUI
import com.unciv.logic.civilization.Notification
import com.unciv.logic.civilization.NotificationCategory
import com.unciv.ui.components.widgets.AutoScrollPane as ScrollPane
import com.unciv.ui.components.widgets.ColorMarkupLabel
import com.unciv.ui.components.widgets.WrappableLabel
import com.unciv.ui.components.input.onClick
import com.unciv.ui.components.extensions.packIfNeeded
import com.unciv.ui.components.extensions.surroundWithCircle
import com.unciv.ui.components.input.onClick
import com.unciv.ui.components.widgets.ColorMarkupLabel
import com.unciv.ui.components.widgets.WrappableLabel
import com.unciv.ui.images.IconCircleGroup
import com.unciv.ui.images.ImageGetter
import com.unciv.ui.screens.basescreen.BaseScreen
import com.unciv.ui.components.widgets.AutoScrollPane as ScrollPane
/*TODO
* Un-hiding the notifications when new ones arrive is a little pointless due to Categories:
@ -34,7 +34,10 @@ import com.unciv.ui.screens.basescreen.BaseScreen
class NotificationsScroll(
private val worldScreen: WorldScreen
) : ScrollPane(null) {
enum class UserSetting(val static: Boolean = false) { Disabled(true), Hidden, Visible, Permanent(true) }
enum class UserSetting(val static: Boolean = false) {
Disabled(true), Hidden, Visible, Permanent(true);
companion object { fun default() = Visible }
}
private companion object {
/** Scale the entire ScrollPane by this factor */
@ -455,7 +458,7 @@ class NotificationsScroll(
private fun getUserSettingCheckDisabled(): Boolean {
val settingString = GUI.getSettings().notificationScroll
val setting = UserSetting.values().firstOrNull { it.name == settingString }
?: UserSetting.Visible
?: UserSetting.default()
userSettingChanged = false
if (setting == userSetting)
return setting == UserSetting.Disabled