Refactor icon to Attacks

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-05-30 10:57:15 +02:00
parent 73428d4341
commit 3b075a05e4
5 changed files with 27 additions and 17 deletions

View file

@ -1,6 +1,9 @@
package com.pixelized.rplexicon.data.model
import android.net.Uri
data class Attack(
val icon: Uri?,
val title: String,
val type: Type,
val range: String?,

View file

@ -29,6 +29,7 @@ class AttackParser @Inject constructor(
val title = row.parse(column = NAME)
if (characterSheet != null && title != null) {
val attack = Attack(
icon = row.parseUri(column = ICON),
title = title,
type = parseType(value = row.parse(column = TYPE)),
range = row.parse(column = RANGE),
@ -62,6 +63,7 @@ class AttackParser @Inject constructor(
private val HIT = column("Touché")
private val DAMAGE = column("Dommage")
private val ALTERATION = column("Altérations")
private val COLUMNS get() = listOf(CHARACTER, NAME, TYPE, RANGE, HIT, DAMAGE, ALTERATION)
private val ICON = column("Icone")
private val COLUMNS get() = listOf(CHARACTER, NAME, TYPE, RANGE, HIT, DAMAGE, ALTERATION, 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.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Arrangement
@ -10,8 +11,8 @@ 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.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@ -19,7 +20,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
@ -27,15 +27,18 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp
import androidx.core.net.toUri
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.data.model.Attack
import com.pixelized.rplexicon.ui.composable.AsyncImage
import com.pixelized.rplexicon.ui.screens.character.composable.common.DiceButton
import com.pixelized.rplexicon.ui.theme.LexiconTheme
import com.pixelized.rplexicon.utilitary.extentions.uri
@Stable
data class AttackUio(
val icon: Uri?,
val id: Attack? = null,
@DrawableRes val icon: Int,
val name: String,
@StringRes val type: Int,
val range: String?,
@ -62,13 +65,16 @@ fun Attack(
.padding(paddingValues = padding)
.minimumInteractiveComponentSize()
.then(other = modifier),
horizontalArrangement = Arrangement.spacedBy(space = 16.dp),
horizontalArrangement = Arrangement.spacedBy(space = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
painter = painterResource(id = weapon.icon),
contentDescription = null,
)
weapon.icon?.let { uri ->
AsyncImage(
modifier = Modifier.size(size = 36.dp),
model = uri,
contentDescription = null,
)
}
Column(
modifier = Modifier.weight(weight = 1f),
) {
@ -140,7 +146,7 @@ private fun WeaponPreview(
private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
override val values: Sequence<AttackUio> = sequenceOf(
AttackUio(
icon = R.drawable.ic_crossed_swords_24,
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
name = "Dagger",
type = R.string.attack_type_melee,
range = "5 ft reach",
@ -148,7 +154,7 @@ private class WeaponPreviewProvider : PreviewParameterProvider<AttackUio> {
damage = AttackUio.Dice(icon = R.drawable.ic_d8_24, label = "1d8"),
),
AttackUio(
icon = R.drawable.ic_pocket_bow_24,
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
name = "Long bow",
type = R.string.attack_type_range,
range = "30 ft reach",

View file

@ -5,8 +5,10 @@ import androidx.compose.runtime.Stable
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.core.net.toUri
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AttackUio
import com.pixelized.rplexicon.utilitary.extentions.uri
@Stable
@Composable
@ -14,7 +16,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
mutableStateOf(
listOf(
AttackUio(
icon = R.drawable.ic_crossed_swords_24,
icon = R.drawable.ic_crossed_swords_24.uri.toUri(),
name = "Dagger",
type = R.string.attack_type_melee,
range = "5 ft reach",
@ -28,7 +30,7 @@ fun rememberAttackListStatePreview(): State<List<AttackUio>> = remember {
),
),
AttackUio(
icon = R.drawable.ic_pocket_bow_24,
icon = R.drawable.ic_pocket_bow_24.uri.toUri(),
name = "Long bow",
type = R.string.attack_type_range,
range = "30 ft reach",

View file

@ -67,10 +67,7 @@ class AttackUioFactory @Inject constructor() {
return AttackUio(
id = attack,
icon = when (attack.type) {
Attack.Type.PHYSICAL_MELEE_ATTACK -> R.drawable.ic_crossed_swords_24
Attack.Type.PHYSICAL_RANGE_ATTACK -> R.drawable.ic_pocket_bow_24
},
icon = attack.icon,
name = attack.title,
type = when (attack.type) {
Attack.Type.PHYSICAL_MELEE_ATTACK -> R.string.attack_type_melee