Add portrait, thumbnail and level to the charactersheet edit.

This commit is contained in:
Thomas Andres Gomez 2025-03-20 09:18:00 +01:00
parent 5eafe057f1
commit 353183f0f5
4 changed files with 67 additions and 16 deletions

View file

@ -42,6 +42,9 @@
<string name="character_sheet_edit__characteristics__int">Intelligence</string>
<string name="character_sheet_edit__characteristics__pow">Pouvoir</string>
<string name="character_sheet_edit__characteristics__cha">Charisme</string>
<string name="character_sheet_edit__characteristics__level">Level</string>
<string name="character_sheet_edit__characteristics__portrait">Portrait</string>
<string name="character_sheet_edit__characteristics__thumbnail">Thumbnail</string>
<string name="character_sheet_edit__sub_characteristics__title">Caractéristiques dérivées</string>
<string name="character_sheet_edit__sub_characteristics__movement">Déplacement</string>
<string name="character_sheet_edit__sub_characteristics__max_hit_point">Points de vie maximum</string>

View file

@ -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,

View file

@ -64,6 +64,9 @@ data class CharacterSheetEditPageUio(
val id: State<String>,
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)
) {

View file

@ -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(