From 560d7653a7d064188358949de8817cbfbb81d7b2 Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Thu, 8 May 2025 19:02:12 +0200 Subject: [PATCH] Hide the ribbon alteration for non GameMaster --- .../player/ribbon/CharacterRibbonFactory.kt | 37 ++++++++++--------- .../player/ribbon/CharacterRibbonViewModel.kt | 5 +++ .../player/ribbon/npc/NpcRibbonViewModel.kt | 4 ++ .../ribbon/player/PlayerRibbonViewModel.kt | 2 + 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonFactory.kt index 569e95b..806ff47 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonFactory.kt @@ -21,6 +21,7 @@ class CharacterRibbonFactory( hideOverruled: Boolean, enableCharacterSheet: Boolean, enableCharacterStats: Boolean, + enableCharacterStatus: Boolean, ): CharacterRibbonUio? { if (characterSheet == null) return null @@ -29,23 +30,6 @@ class CharacterRibbonFactory( alterations = fieldAlterations, ) - val status = alterations.map { alteration -> - CharacterRibbonAlterationUio( - icon = alteration.metadata.icon ?: DEFAULT_ICON, - tooltips = BasicTooltipUio( - title = alteration.metadata.name, - description = alteration.metadata.description, - ), - ) - }.fold( - initial = mutableListOf>(), - operation = { acc, item -> - if (acc.isEmpty() || acc.last().size == 5) acc.add(mutableListOf()) - acc.last().add(item) - acc - } - ) - return CharacterRibbonUio( characterSheetId = characterSheet.id, hideOverruled = hideOverruled, @@ -63,7 +47,24 @@ class CharacterRibbonFactory( ) }, ), - status = status, + status = takeIf { enableCharacterStats }?.let { + alterations.map { alteration -> + CharacterRibbonAlterationUio( + icon = alteration.metadata.icon ?: DEFAULT_ICON, + tooltips = BasicTooltipUio( + title = alteration.metadata.name, + description = alteration.metadata.description, + ), + ) + }.fold( + initial = mutableListOf>(), + operation = { acc, item -> + if (acc.isEmpty() || acc.last().size == 5) acc.add(mutableListOf()) + acc.last().add(item) + acc + } + ) + } ?: emptyList(), ) } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonViewModel.kt index 534a5b4..78fab0b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/CharacterRibbonViewModel.kt @@ -61,6 +61,10 @@ abstract class CharacterRibbonViewModel( settings: Settings, ): Boolean + abstract fun enableCharacterStatus( + settings: Settings, + ): Boolean + /** * This flow is a tad complex so there is an explanation of wtf it's about : * On a campaign update it go through every element of the abstract [fetch] list and either: @@ -93,6 +97,7 @@ abstract class CharacterRibbonViewModel( hideOverruled = hideOverruled, enableCharacterSheet = enableCharacterSheet(settings = settings), enableCharacterStats = enableCharacterStats(settings = settings), + enableCharacterStatus = enableCharacterStatus(settings = settings), ) } }, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/npc/NpcRibbonViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/npc/NpcRibbonViewModel.kt index ec2a5e8..3dd6c5b 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/npc/NpcRibbonViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/npc/NpcRibbonViewModel.kt @@ -43,4 +43,8 @@ class NpcRibbonViewModel( override fun enableCharacterStats(settings: Settings): Boolean { return settings.isGameMaster ?: false } + + override fun enableCharacterStatus(settings: Settings): Boolean { + return settings.isGameMaster ?: false + } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/player/PlayerRibbonViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/player/PlayerRibbonViewModel.kt index 918f54a..e80b095 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/player/PlayerRibbonViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/player/ribbon/player/PlayerRibbonViewModel.kt @@ -39,4 +39,6 @@ class PlayerRibbonViewModel( override fun enableCharacterSheet(settings: Settings) = true override fun enableCharacterStats(settings: Settings) = true + + override fun enableCharacterStatus(settings: Settings) = true } \ No newline at end of file