From abdb39abc293de6eca96bda4588b810223ded5ae Mon Sep 17 00:00:00 2001 From: "Andres Gomez, Thomas (ITDV RL)" Date: Wed, 21 Aug 2024 15:44:25 +0200 Subject: [PATCH] Add inspiration support in the game master screen. --- .../summary/composable/AttributesSummary.kt | 4 +++ .../summary/composable/common/SummaryCell.kt | 35 ++++++++++--------- .../summary/composable/common/SummaryRow.kt | 12 +++++++ .../statistic/rememberAttributesSummary.kt | 9 +++++ .../summary/pages/statistic/SummaryFactory.kt | 8 +++++ 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt index 27b98ff..33a8e1f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt @@ -34,6 +34,7 @@ data class AttributesSummaryUio( val dc: SummaryRowUio, val initiative: SummaryRowUio, val speed: SummaryRowUio, + val inspiration: SummaryRowUio, ) @Composable @@ -74,6 +75,9 @@ fun AttributesSummary( SummaryRow( row = attributes.speed, ) + SummaryRow( + row = attributes.inspiration, + ) } } Text( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryCell.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryCell.kt index 631a68f..eeef9c8 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryCell.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryCell.kt @@ -54,7 +54,7 @@ data class SummaryCellUio( @Stable data class Proficiency( - val label: String, + val label: String?, val multiplier: Int, ) : Mode() @@ -93,7 +93,7 @@ fun maxLabel( @Stable fun proficiency( - label: String, + label: String?, multiplier: Int, ): SummaryCellUio { return SummaryCellUio( @@ -226,25 +226,28 @@ private fun SummaryProficiency( .padding(start = 4.dp) .then(other = modifier), verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, ) { MasteryCircle( size = MaterialTheme.lexicon.dimens.summary.mastery, multiplier = value.multiplier, ) - AnimatedContent( - modifier = Modifier.weight(weight = 1f), - targetState = value.label, - label = "SummaryMaxLabelAnimation", - transitionSpec = animationSpec(), - ) { - Text( - text = it, - style = style, - color = color, - overflow = TextOverflow.Ellipsis, - textAlign = TextAlign.Center, - maxLines = 1 - ) + if (value.label != null) { + AnimatedContent( + modifier = Modifier.weight(weight = 1f), + targetState = value.label, + label = "SummaryMaxLabelAnimation", + transitionSpec = animationSpec(), + ) { + Text( + text = it, + style = style, + color = color, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.Center, + maxLines = 1 + ) + } } } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt index 2044185..8af503e 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt @@ -157,6 +157,18 @@ private fun SummaryRowPreview() { ) } ) + SummaryRow( + row = remember { + SummaryRowUio( + label = R.string.character_sheet_proficiency_perception, + c1 = mutableStateOf(proficiency(null, 1)), + c2 = mutableStateOf(proficiency(null, 0)), + c3 = mutableStateOf(proficiency(null, 1)), + c4 = mutableStateOf(proficiency(null, 0)), + c5 = mutableStateOf(proficiency(null, 0)), + ) + } + ) SummaryRow( row = remember { SummaryRowUio( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberAttributesSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberAttributesSummary.kt index 13c09d3..6435a4b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberAttributesSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberAttributesSummary.kt @@ -8,6 +8,7 @@ import com.pixelized.rplexicon.R import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummaryUio import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio import com.pixelized.rplexicon.ui.screens.summary.composable.common.label +import com.pixelized.rplexicon.ui.screens.summary.composable.common.proficiency @Composable @Stable @@ -54,6 +55,14 @@ fun rememberAttributesSummary(): AttributesSummaryUio { c4 = mutableStateOf(label(label = "10m")), c5 = mutableStateOf(label(label = "10m")), ), + inspiration = SummaryRowUio( + label = R.string.character_sheet_title_inspiration, + c1 = mutableStateOf(proficiency(label = null, multiplier = 0)), + c2 = mutableStateOf(proficiency(label = null, multiplier = 1)), + c3 = mutableStateOf(proficiency(label = null, multiplier = 1)), + c4 = mutableStateOf(proficiency(label = null, multiplier = 1)), + c5 = mutableStateOf(proficiency(label = null, multiplier = 1)), + ) ) } } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt index f1af3b6..1005ad8 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt @@ -76,6 +76,7 @@ class SummaryFactory @Inject constructor( dc = SummaryRowUio(label = R.string.character_sheet_title_dc), initiative = SummaryRowUio(label = R.string.character_sheet_title_initiative), speed = SummaryRowUio(label = R.string.character_sheet_title_speed), + inspiration = SummaryRowUio(label = R.string.character_sheet_title_inspiration), ) val characteristics = CharacteristicsSummaryUio( strength = SummaryRowUio(label = R.string.character_sheet_stat_strength), @@ -217,12 +218,17 @@ class SummaryFactory @Inject constructor( val speed = label( label = "${max(sheet.speed + status[Property.SPEED].sum, 0)}m", ) + val inspiration = proficiency( + label = null, + multiplier = fire?.skills?.get(INSPIRATION) ?: 0 + ) withContext(Dispatchers.Main) { attributes.hp.get(sheet)?.value = hitPoint attributes.ac.get(sheet)?.value = armorClass attributes.dc.get(sheet)?.value = dC attributes.initiative.get(sheet)?.value = initiative attributes.speed.get(sheet)?.value = speed + attributes.inspiration.get(sheet)?.value = inspiration } } withContext(Dispatchers.Main) { @@ -757,6 +763,8 @@ class SummaryFactory @Inject constructor( private const val ENTER_ANIMATION_INITIAL_DELAY = 250L private const val ENTER_ANIMATION_DELAY = 100L + private const val INSPIRATION = "Inspiration" + private const val PRONE = "À terre" private const val GRAPPLED = "Agrippé" private const val DEAFENED = "Assourdi"