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
data class Equipment(
var silhouette: String? = null,
val head: String? = null,
val face: String? = null,
val neck: String? = null,
@ -17,6 +18,7 @@ data class Equipment(
val offHand: String? = null,
) {
class Builder(
var background: String? = null,
var head: String? = null,
var face: String? = null,
var neck: String? = null,
@ -33,6 +35,7 @@ data class Equipment(
var offHand: String? = null,
) {
fun build(): Equipment = Equipment(
silhouette = background,
head = head,
face = face,
neck = neck,

View file

@ -22,6 +22,7 @@ class EquipmentParser @Inject constructor() {
val character = characters[column]
equipments.getEquipment(name = character).let {
when (row[0]) {
BACKGROUND -> it.background = item.toItem()
HEAD -> it.head = item.toItem()
FACE -> it.face = item.toItem()
NECK -> it.neck = item.toItem()
@ -51,6 +52,7 @@ class EquipmentParser @Inject constructor() {
this.getOrPut(name) { Equipment.Builder() }
companion object {
private const val BACKGROUND = "Silhouette"
private const val HEAD = "Tête"
private const val FACE = "Visage"
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.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.BlurredEdgeTreatment
import androidx.compose.ui.draw.blur
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp
@ -74,7 +75,10 @@ fun BlurredOverlayHost(
label = "RollOverlayHostBlurAnimation",
)
Box(
modifier = Modifier.blur(radius = blurs.value),
modifier = Modifier.blur(
radius = blurs.value,
edgeTreatment = BlurredEdgeTreatment.Unbounded,
),
content = { content() },
)
AnimatedVisibility(

View file

@ -15,15 +15,19 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Icon
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
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.res.painterResource
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.rememberBackgroundGradient
import com.pixelized.rplexicon.ui.theme.LexiconTheme
import com.pixelized.rplexicon.utilitary.extentions.uri
@Stable
data class EquipmentItemUio(
@DrawableRes val silhouette: Int,
val silhouette: String? = null,
val head: String? = null,
val face: String? = null,
val shoulder: String? = null,
@ -63,11 +68,15 @@ fun EquipmentItem(
equipments: EquipmentItemUio,
onClick: (String) -> Unit,
) {
val contentColor = LocalContentColor.current
Box(modifier = modifier) {
BackgroundImage(
modifier = Modifier.matchParentSize(),
contentScale = ContentScale.FillHeight,
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 {
@ -277,7 +286,7 @@ private fun InventoryItemPreview() {
EquipmentItem(
modifier = Modifier.fillMaxWidth(),
equipments = EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256,
silhouette = R.drawable.ic_woman_archer_256.uri,
shoulder = "Cloak of Protection",
mainHand = "Battleaxe",
offHand = "Shield",

View file

@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import com.pixelized.rplexicon.R
import com.pixelized.rplexicon.ui.screens.character.composable.actions.EquipmentItemUio
import com.pixelized.rplexicon.utilitary.extentions.uri
@Composable
@Stable
@ -14,7 +15,7 @@ fun rememberEquipmentState(): State<EquipmentItemUio> {
return remember {
mutableStateOf(
EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256,
silhouette = R.drawable.ic_woman_archer_256.uri,
shoulder = "Cloak of Protection",
mainHand = "Battleaxe",
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.pages.actions.SkillDetailUio
import com.pixelized.rplexicon.utilitary.extentions.context
import com.pixelized.rplexicon.utilitary.extentions.uri
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
@ -61,7 +62,7 @@ class InventoryViewModel @Inject constructor(
equipmentRepository.data.collect {
val equipments = it[character]?.let { data ->
EquipmentItemUio(
silhouette = R.drawable.ic_woman_archer_256,
silhouette = data.silhouette ?: R.drawable.ic_woman_archer_256.uri,
head = data.head,
face = data.face,
shoulder = data.shoulder,