From 353183f0f5d86b7e7d04fe2a0fd3f87f01521e1d Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Thu, 20 Mar 2025 09:18:00 +0100 Subject: [PATCH] Add portrait, thumbnail and level to the charactersheet edit. --- .../composeResources/values/strings.xml | 3 ++ .../edit/CharacterSheetEditFactory.kt | 35 +++++++++++++-- .../edit/CharacterSheetEditPage.kt | 43 +++++++++++++------ .../edit/composable/LevelUpField.kt | 2 +- 4 files changed, 67 insertions(+), 16 deletions(-) diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index a28bf69..82b5f9c 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -42,6 +42,9 @@ Intelligence Pouvoir Charisme + Level + Portrait + Thumbnail Caractéristiques dérivées Déplacement Points de vie maximum diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt index 807581f..cc4016e 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditFactory.kt @@ -10,6 +10,7 @@ import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.Action import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.BaseSkillFieldUio import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.LevelUpWrapperUio import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.SimpleFieldUio +import com.pixelized.desktop.lwa.ui.screen.characterSheet.edit.composable.textfield.TextFieldWrapperUio import com.pixelized.desktop.lwa.utils.extention.unAccent import com.pixelized.shared.lwa.model.characterSheet.CharacterSheet import com.pixelized.shared.lwa.usecase.CharacterSheetUseCase @@ -21,8 +22,11 @@ import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__ch import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__dex import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__hei import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__int +import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__level +import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__portrait import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__pow import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__str +import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__characteristics__thumbnail import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__level_up import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__name_label import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__skills__acrobatics_base @@ -89,7 +93,9 @@ class CharacterSheetEditFactory( editedSheet: CharacterSheetEditPageUio, ): CharacterSheet { - val level = currentSheet?.level ?: 1 + val level = editedSheet.level.unpack()?.toIntOrNull() + ?: currentSheet?.level + ?: 1 val strength = editedSheet.strength.unpack()?.toIntOrNull() ?: currentSheet?.strength ?: 0 @@ -115,8 +121,8 @@ class CharacterSheetEditFactory( return CharacterSheet( id = editedSheet.id.value, name = editedSheet.name.value.value, - portrait = currentSheet?.portrait, - thumbnail = currentSheet?.thumbnail, + portrait = editedSheet.portrait.value.value, + thumbnail = editedSheet.thumbnail.value.value, level = level, shouldLevelUp = editedSheet.levelUp.checked.value, strength = strength, @@ -251,6 +257,8 @@ class CharacterSheetEditFactory( val specialSkillsLabel = getString(Res.string.character_sheet_edit__skills__special_title) val magicSkillsLabel = getString(Res.string.character_sheet_edit__skills__magic_title) + val portrait = mutableStateOf(sheet?.portrait ?: "") + val thumbnail = mutableStateOf(sheet?.thumbnail ?: "") return with(characterSheetUseCase) { val name = skillFieldFactory.createWrapper( @@ -263,6 +271,27 @@ class CharacterSheetEditFactory( }, levelUp = createLevelUpWrapper(shouldLevelUp = sheet?.shouldLevelUp ?: false), name = name, + level = SimpleFieldUio( + label = getString(Res.string.character_sheet_edit__characteristics__level), + value = skillFieldFactory.createWrapper( + value = sheet?.level?.toString() ?: "", + placeholder = mutableStateOf("1"), + ) + ), + portrait = TextFieldWrapperUio( + enable = true, + label = mutableStateOf(getString(Res.string.character_sheet_edit__characteristics__portrait)), + value = portrait, + placeholder = mutableStateOf(null), + onValueChange = { portrait.value = it }, + ), + thumbnail = TextFieldWrapperUio( + enable = true, + label = mutableStateOf(getString(Res.string.character_sheet_edit__characteristics__thumbnail)), + value = thumbnail, + placeholder = mutableStateOf(null), + onValueChange = { portrait.value = it }, + ), strength = str, dexterity = dex, constitution = con, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt index 9c24d1e..8b53882 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/CharacterSheetEditPage.kt @@ -64,6 +64,9 @@ data class CharacterSheetEditPageUio( val id: State, val levelUp: LevelUpWrapperUio, val name: TextFieldWrapperUio, + val level: SimpleFieldUio, + val portrait: TextFieldWrapperUio, + val thumbnail: TextFieldWrapperUio, val strength: SimpleFieldUio, val dexterity: SimpleFieldUio, val constitution: SimpleFieldUio, @@ -172,24 +175,40 @@ fun CharacterSheetEdit( .padding(all = 16.dp), verticalArrangement = Arrangement.spacedBy(space = 16.dp) ) { - Row( - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = Modifier.weight(1f), - style = MaterialTheme.lwa.typography.base.caption, - text = form.id.value - ) - LevelUpField( - field = form.levelUp, - ) - } + Text( + modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.lwa.typography.base.caption, + text = "id : ${form.id.value}" + ) TextFieldWrapper( modifier = Modifier.fillMaxWidth(), wrapper = form.name, ) + TextFieldWrapper( + modifier = Modifier.fillMaxWidth(), + wrapper = form.portrait, + ) + + TextFieldWrapper( + modifier = Modifier.fillMaxWidth(), + wrapper = form.thumbnail, + ) + + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + LevelUpField( + modifier = Modifier.weight(1f), + field = form.levelUp, + ) + SimpleField( + modifier = Modifier.weight(2f), + field = form.level, + ) + } + Row( horizontalArrangement = Arrangement.spacedBy(space = 16.dp) ) { diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt index 534eb6a..0674774 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/characterSheet/edit/composable/LevelUpField.kt @@ -29,7 +29,7 @@ fun LevelUpField( verticalAlignment = Alignment.CenterVertically, ) { Text( - style = MaterialTheme.lwa.typography.base.body1, + style = MaterialTheme.lwa.typography.base.caption, text = field.label, ) Checkbox(