Hide the ribbon alteration for non GameMaster

This commit is contained in:
Thomas Andres Gomez 2025-05-08 19:02:12 +02:00
parent 05a6b496cb
commit 560d7653a7
4 changed files with 30 additions and 18 deletions

View file

@ -21,6 +21,7 @@ class CharacterRibbonFactory(
hideOverruled: Boolean, hideOverruled: Boolean,
enableCharacterSheet: Boolean, enableCharacterSheet: Boolean,
enableCharacterStats: Boolean, enableCharacterStats: Boolean,
enableCharacterStatus: Boolean,
): CharacterRibbonUio? { ): CharacterRibbonUio? {
if (characterSheet == null) return null if (characterSheet == null) return null
@ -29,23 +30,6 @@ class CharacterRibbonFactory(
alterations = fieldAlterations, 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<MutableList<CharacterRibbonAlterationUio>>(),
operation = { acc, item ->
if (acc.isEmpty() || acc.last().size == 5) acc.add(mutableListOf())
acc.last().add(item)
acc
}
)
return CharacterRibbonUio( return CharacterRibbonUio(
characterSheetId = characterSheet.id, characterSheetId = characterSheet.id,
hideOverruled = hideOverruled, 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<MutableList<CharacterRibbonAlterationUio>>(),
operation = { acc, item ->
if (acc.isEmpty() || acc.last().size == 5) acc.add(mutableListOf())
acc.last().add(item)
acc
}
)
} ?: emptyList(),
) )
} }
} }

View file

@ -61,6 +61,10 @@ abstract class CharacterRibbonViewModel(
settings: Settings, settings: Settings,
): Boolean ): Boolean
abstract fun enableCharacterStatus(
settings: Settings,
): Boolean
/** /**
* This flow is a tad complex so there is an explanation of wtf it's about : * 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: * 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, hideOverruled = hideOverruled,
enableCharacterSheet = enableCharacterSheet(settings = settings), enableCharacterSheet = enableCharacterSheet(settings = settings),
enableCharacterStats = enableCharacterStats(settings = settings), enableCharacterStats = enableCharacterStats(settings = settings),
enableCharacterStatus = enableCharacterStatus(settings = settings),
) )
} }
}, },

View file

@ -43,4 +43,8 @@ class NpcRibbonViewModel(
override fun enableCharacterStats(settings: Settings): Boolean { override fun enableCharacterStats(settings: Settings): Boolean {
return settings.isGameMaster ?: false return settings.isGameMaster ?: false
} }
override fun enableCharacterStatus(settings: Settings): Boolean {
return settings.isGameMaster ?: false
}
} }

View file

@ -39,4 +39,6 @@ class PlayerRibbonViewModel(
override fun enableCharacterSheet(settings: Settings) = true override fun enableCharacterSheet(settings: Settings) = true
override fun enableCharacterStats(settings: Settings) = true override fun enableCharacterStats(settings: Settings) = true
override fun enableCharacterStatus(settings: Settings) = true
} }