Add icon to objects

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-05-29 18:44:37 +02:00
parent 757ad75804
commit 60c11e6192
5 changed files with 22 additions and 2 deletions

View file

@ -1,7 +1,10 @@
package com.pixelized.rplexicon.data.model
import android.net.Uri
data class ObjectAction(
val prefix: String?,
val icon: Uri?,
val name: String,
val effect: Throw?,
)

View file

@ -24,6 +24,7 @@ class ObjectActionParser @Inject constructor(
objects.getOrPut(character) { mutableListOf() }.add(
ObjectAction(
prefix = row.parse(column = PREFIX),
icon = row.parseUri(column = ICON),
name = name,
effect = throwParser.parse(value = row.parse(column = EFFECT)),
)
@ -40,6 +41,7 @@ class ObjectActionParser @Inject constructor(
private val PREFIX = column("Préfix")
private val NAME = column("Nom")
private val EFFECT = column("Effet")
private val COLUMNS = listOf(PREFIX, NAME, EFFECT)
private val ICON = column("Icone")
private val COLUMNS = listOf(PREFIX, NAME, EFFECT, ICON)
}
}

View file

@ -2,6 +2,7 @@ package com.pixelized.rplexicon.ui.screens.character.composable.actions
import android.content.res.Configuration.UI_MODE_NIGHT_NO
import android.content.res.Configuration.UI_MODE_NIGHT_YES
import android.net.Uri
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@ -10,6 +11,7 @@ import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.minimumInteractiveComponentSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
@ -27,10 +29,12 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.data.model.Throw
import com.pixelized.rplexicon.ui.composable.AsyncImage
import com.pixelized.rplexicon.ui.theme.LexiconTheme
@Stable
data class ObjectItemUio(
val icon: Uri?,
val prefix: String?,
val name: String,
val original: String?,
@ -51,9 +55,16 @@ fun ObjectItem(
.minimumInteractiveComponentSize()
.padding(paddingValues = padding)
.then(other = modifier),
horizontalArrangement = Arrangement.spacedBy(space = 12.dp),
horizontalArrangement = Arrangement.spacedBy(space = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
item.icon?.let { uri ->
AsyncImage(
modifier = Modifier.size(size = 36.dp),
model = uri,
contentDescription = null,
)
}
Column(
modifier = Modifier.weight(weight = 1f)
) {
@ -101,6 +112,7 @@ private fun ObjectItemPreview() {
ObjectItem(
modifier = Modifier.fillMaxWidth(),
item = ObjectItemUio(
icon = null,
prefix = "Parchemin de ",
name = "Bénédiction",
original = "Blessing",

View file

@ -13,12 +13,14 @@ fun rememberObjectListStatePreview() = remember {
mutableStateOf(
listOf(
ObjectItemUio(
icon = null,
prefix = null,
name = "Potion de guérison",
original = "Healing potion",
effect = null,
),
ObjectItemUio(
icon = null,
prefix = "Parchemin de",
name = "Bénédiction",
original = "Blessing",

View file

@ -36,6 +36,7 @@ class ObjectsViewModel @Inject constructor(
val data = objects[character]?.map {
ObjectItemUio(
prefix = it.prefix,
icon = it.icon,
name = it.name,
original = descriptionRepository.find(name = it.name)?.original,
effect = it.effect,