From c5874fcc8cc891b24f18166e5c773b3c63426477 Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Thu, 28 Sep 2023 17:01:07 +0200 Subject: [PATCH] Add DC saving throw in the character sheets. --- .../pixelized/rplexicon/model/CharacterSheet.kt | 1 + .../repository/parser/CharacterSheetParser.kt | 3 +++ .../composable/character/CharacterSheetHeader.kt | 5 ++++- .../character/composable/character/LabelPoint.kt | 14 ++++++++------ .../preview/rememberCharacterHeaderStatePreview.kt | 4 ++++ .../factory/CharacterSheetHeaderUioFactory.kt | 6 ++++++ app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/model/CharacterSheet.kt b/app/src/main/java/com/pixelized/rplexicon/model/CharacterSheet.kt index b19fb32..e8464be 100644 --- a/app/src/main/java/com/pixelized/rplexicon/model/CharacterSheet.kt +++ b/app/src/main/java/com/pixelized/rplexicon/model/CharacterSheet.kt @@ -17,6 +17,7 @@ data class CharacterSheet( val spell7: Counter?, val spell8: Counter?, val spell9: Counter?, + val dC: Int?, val criticalModifier: Int, // Critical Dice Multiplier val armorClass: Int, // Classe d'armure val speed: Int, // Vitesse diff --git a/app/src/main/java/com/pixelized/rplexicon/repository/parser/CharacterSheetParser.kt b/app/src/main/java/com/pixelized/rplexicon/repository/parser/CharacterSheetParser.kt index 8116be2..da6cab0 100644 --- a/app/src/main/java/com/pixelized/rplexicon/repository/parser/CharacterSheetParser.kt +++ b/app/src/main/java/com/pixelized/rplexicon/repository/parser/CharacterSheetParser.kt @@ -80,6 +80,7 @@ class CharacterSheetParser @Inject constructor( spell9 = counterParser.parseCounter( value = item.parseString(SPELL_LEVEL_9) ), + dC = item.parseInt(DD_SAVE_THROW), criticalModifier = item.parseInt(CRITICAL_MODIFIER) ?: 2, armorClass = item.parseInt(ARMOR_CLASS) ?: 10, speed = item.parseInt(SPEED) ?: 10, @@ -140,6 +141,7 @@ class CharacterSheetParser @Inject constructor( private const val SPELL_LEVEL_7 = "Sort de niveau 7" private const val SPELL_LEVEL_8 = "Sort de niveau 8" private const val SPELL_LEVEL_9 = "Sort de niveau 9" + private const val DD_SAVE_THROW = "DD sauvergarde des sorts" private const val CRITICAL_MODIFIER = "Dé de critique" private const val ARMOR_CLASS = "Classe d'armure" private const val SPEED = "Vitesse" @@ -192,6 +194,7 @@ class CharacterSheetParser @Inject constructor( SPELL_LEVEL_7, SPELL_LEVEL_8, SPELL_LEVEL_9, + DD_SAVE_THROW, CRITICAL_MODIFIER, ARMOR_CLASS, SPEED, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/CharacterSheetHeader.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/CharacterSheetHeader.kt index a2812ed..4bc5fd0 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/CharacterSheetHeader.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/CharacterSheetHeader.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable @@ -27,6 +28,7 @@ data class CharacterSheetHeaderUio( val armorClass: LabelPointUio, val hitPoint: LabelPointUio, val speed: LabelPointUio, + val dC: LabelPointUio?, ) @OptIn(ExperimentalFoundationApi::class) @@ -55,7 +57,8 @@ fun CharacterSheetHeader( ) { header.value?.armorClass?.let { LabelPoint(label = it) } header.value?.hitPoint?.let { LabelPoint(label = it) } - header.value?.speed?.let { LabelPoint(label = it) } + header.value?.dC?.let { LabelPoint(label = it) } + header.value?.speed?.let { LabelPoint(label = it,) } } IndicatorStep( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/LabelPoint.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/LabelPoint.kt index f8e32df..2a06ea5 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/LabelPoint.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/LabelPoint.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -16,6 +15,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.pixelized.rplexicon.R @@ -31,18 +31,19 @@ class LabelPointUio( @Composable fun LabelPoint( modifier: Modifier = Modifier, - titleStyle: TextStyle = MaterialTheme.typography.labelSmall, + labelStyle: TextStyle = MaterialTheme.typography.labelSmall, valueStyle: TextStyle = MaterialTheme.typography.headlineMedium, - labelStyle: TextStyle = MaterialTheme.typography.titleMedium, + maxStyle: TextStyle = MaterialTheme.typography.titleMedium, label: LabelPointUio, ) { Column( - verticalArrangement = Arrangement.spacedBy(4.dp), + modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally ) { label.label?.let { Text( - style = titleStyle, + style = labelStyle, + fontWeight = FontWeight.Light, text = stringResource(id = it) ) } @@ -52,12 +53,13 @@ fun LabelPoint( Text( modifier = Modifier.alignByBaseline(), style = valueStyle, + fontWeight = FontWeight.Bold, text = label.value ?: "0" ) label.max?.let { Text( modifier = Modifier.alignByBaseline(), - style = labelStyle, + style = maxStyle, text = it, ) } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberCharacterHeaderStatePreview.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberCharacterHeaderStatePreview.kt index 05104ce..95b7e71 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberCharacterHeaderStatePreview.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/preview/rememberCharacterHeaderStatePreview.kt @@ -27,6 +27,10 @@ fun rememberCharacterHeaderStatePreview() = remember { value = "30", max = "m", ), + dC = LabelPointUio( + label = R.string.character_sheet_title_dc, + value = "13", + ), ) ) } \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetHeaderUioFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetHeaderUioFactory.kt index 47caf45..f14d173 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetHeaderUioFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetHeaderUioFactory.kt @@ -36,6 +36,12 @@ class CharacterSheetHeaderUioFactory @Inject constructor() { value = model.hitPoint, max = "/ ${model.maxHitPoint}", ), + dC = model.dC?.let { + LabelPointUio( + label = R.string.character_sheet_title_dc, + value = "$it", + ) + } ) } } \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f614ceb..fb28b4f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -74,6 +74,7 @@ Feuille de personnage Point de vie CA + DD Vitesse Initiative Jet de sauvegarde diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 818c5d7..5182c63 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -74,6 +74,7 @@ Character sheet HP CA + DC Speed Initiative Saving Throws