Add silouette support inside the equipment page.

This commit is contained in:
Thomas Andres Gomez 2023-11-03 15:33:23 +01:00
parent 30a68a21d6
commit 99d5076168
6 changed files with 26 additions and 6 deletions

View file

@ -1,6 +1,7 @@
package com.pixelized.rplexicon.model package com.pixelized.rplexicon.model
data class Equipment( data class Equipment(
var silhouette: String? = null,
val head: String? = null, val head: String? = null,
val face: String? = null, val face: String? = null,
val neck: String? = null, val neck: String? = null,
@ -17,6 +18,7 @@ data class Equipment(
val offHand: String? = null, val offHand: String? = null,
) { ) {
class Builder( class Builder(
var background: String? = null,
var head: String? = null, var head: String? = null,
var face: String? = null, var face: String? = null,
var neck: String? = null, var neck: String? = null,
@ -33,6 +35,7 @@ data class Equipment(
var offHand: String? = null, var offHand: String? = null,
) { ) {
fun build(): Equipment = Equipment( fun build(): Equipment = Equipment(
silhouette = background,
head = head, head = head,
face = face, face = face,
neck = neck, neck = neck,

View file

@ -22,6 +22,7 @@ class EquipmentParser @Inject constructor() {
val character = characters[column] val character = characters[column]
equipments.getEquipment(name = character).let { equipments.getEquipment(name = character).let {
when (row[0]) { when (row[0]) {
BACKGROUND -> it.background = item.toItem()
HEAD -> it.head = item.toItem() HEAD -> it.head = item.toItem()
FACE -> it.face = item.toItem() FACE -> it.face = item.toItem()
NECK -> it.neck = item.toItem() NECK -> it.neck = item.toItem()
@ -51,6 +52,7 @@ class EquipmentParser @Inject constructor() {
this.getOrPut(name) { Equipment.Builder() } this.getOrPut(name) { Equipment.Builder() }
companion object { companion object {
private const val BACKGROUND = "Silhouette"
private const val HEAD = "Tête" private const val HEAD = "Tête"
private const val FACE = "Visage" private const val FACE = "Visage"
private const val NECK = "Gorge" private const val NECK = "Gorge"

View file

@ -21,6 +21,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.BlurredEdgeTreatment
import androidx.compose.ui.draw.blur import androidx.compose.ui.draw.blur
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@ -74,7 +75,10 @@ fun BlurredOverlayHost(
label = "RollOverlayHostBlurAnimation", label = "RollOverlayHostBlurAnimation",
) )
Box( Box(
modifier = Modifier.blur(radius = blurs.value), modifier = Modifier.blur(
radius = blurs.value,
edgeTreatment = BlurredEdgeTreatment.Unbounded,
),
content = { content() }, content = { content() },
) )
AnimatedVisibility( AnimatedVisibility(

View file

@ -15,15 +15,19 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -37,10 +41,11 @@ import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.composable.BackgroundImage import com.pixelized.rplexicon.ui.composable.BackgroundImage
import com.pixelized.rplexicon.ui.composable.rememberBackgroundGradient import com.pixelized.rplexicon.ui.composable.rememberBackgroundGradient
import com.pixelized.rplexicon.ui.theme.LexiconTheme import com.pixelized.rplexicon.ui.theme.LexiconTheme
import com.pixelized.rplexicon.utilitary.extentions.uri
@Stable @Stable
data class EquipmentItemUio( data class EquipmentItemUio(
@DrawableRes val silhouette: Int, val silhouette: String? = null,
val head: String? = null, val head: String? = null,
val face: String? = null, val face: String? = null,
val shoulder: String? = null, val shoulder: String? = null,
@ -63,11 +68,15 @@ fun EquipmentItem(
equipments: EquipmentItemUio, equipments: EquipmentItemUio,
onClick: (String) -> Unit, onClick: (String) -> Unit,
) { ) {
val contentColor = LocalContentColor.current
Box(modifier = modifier) { Box(modifier = modifier) {
BackgroundImage( BackgroundImage(
modifier = Modifier.matchParentSize(), modifier = Modifier.matchParentSize(),
contentScale = ContentScale.FillHeight,
background = rememberBackgroundGradient(from = 0.75f, to = 0.95f), background = rememberBackgroundGradient(from = 0.75f, to = 0.95f),
painter = painterResource(id = R.drawable.ic_woman_archer_256), colorFilter = remember { ColorFilter.tint(color = contentColor) },
model = equipments.silhouette,
) )
Column { Column {
@ -277,7 +286,7 @@ private fun InventoryItemPreview() {
EquipmentItem( EquipmentItem(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
equipments = EquipmentItemUio( equipments = EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256, silhouette = R.drawable.ic_woman_archer_256.uri,
shoulder = "Cloak of Protection", shoulder = "Cloak of Protection",
mainHand = "Battleaxe", mainHand = "Battleaxe",
offHand = "Shield", offHand = "Shield",

View file

@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import com.pixelized.rplexicon.R import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.screens.character.composable.actions.EquipmentItemUio import com.pixelized.rplexicon.ui.screens.character.composable.actions.EquipmentItemUio
import com.pixelized.rplexicon.utilitary.extentions.uri
@Composable @Composable
@Stable @Stable
@ -14,7 +15,7 @@ fun rememberEquipmentState(): State<EquipmentItemUio> {
return remember { return remember {
mutableStateOf( mutableStateOf(
EquipmentItemUio( EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256, silhouette = R.drawable.ic_woman_archer_256.uri,
shoulder = "Cloak of Protection", shoulder = "Cloak of Protection",
mainHand = "Battleaxe", mainHand = "Battleaxe",
offHand = "Shield", offHand = "Shield",

View file

@ -16,6 +16,7 @@ import com.pixelized.rplexicon.ui.screens.character.composable.actions.Inventory
import com.pixelized.rplexicon.ui.screens.character.factory.ItemUioFactory import com.pixelized.rplexicon.ui.screens.character.factory.ItemUioFactory
import com.pixelized.rplexicon.ui.screens.character.pages.actions.SkillDetailUio import com.pixelized.rplexicon.ui.screens.character.pages.actions.SkillDetailUio
import com.pixelized.rplexicon.utilitary.extentions.context import com.pixelized.rplexicon.utilitary.extentions.context
import com.pixelized.rplexicon.utilitary.extentions.uri
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
@ -61,7 +62,7 @@ class InventoryViewModel @Inject constructor(
equipmentRepository.data.collect { equipmentRepository.data.collect {
val equipments = it[character]?.let { data -> val equipments = it[character]?.let { data ->
EquipmentItemUio( EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256, silhouette = data.silhouette ?: R.drawable.ic_woman_archer_256.uri,
head = data.head, head = data.head,
face = data.face, face = data.face,
shoulder = data.shoulder, shoulder = data.shoulder,