Update the landing screen background & Clean import
This commit is contained in:
parent
4b54e51b39
commit
223ae9f02b
53 changed files with 282 additions and 90 deletions
|
|
@ -39,7 +39,7 @@ import com.pixelized.rplexicon.ui.screens.rolls.RollOverlay
|
||||||
import com.pixelized.rplexicon.ui.screens.rolls.RollOverlayViewModel
|
import com.pixelized.rplexicon.ui.screens.rolls.RollOverlayViewModel
|
||||||
import com.pixelized.rplexicon.ui.screens.rolls.rememberBlurredRollOverlayHostState
|
import com.pixelized.rplexicon.ui.screens.rolls.rememberBlurredRollOverlayHostState
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0)
|
val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import coil.ImageLoader
|
||||||
import coil.ImageLoaderFactory
|
import coil.ImageLoaderFactory
|
||||||
import coil.disk.DiskCache
|
import coil.disk.DiskCache
|
||||||
import coil.memory.MemoryCache
|
import coil.memory.MemoryCache
|
||||||
import coil.size.Precision
|
|
||||||
import dagger.hilt.android.HiltAndroidApp
|
import dagger.hilt.android.HiltAndroidApp
|
||||||
|
|
||||||
@HiltAndroidApp
|
@HiltAndroidApp
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,14 @@
|
||||||
package com.pixelized.rplexicon.ui.composable
|
package com.pixelized.rplexicon.ui.composable
|
||||||
|
|
||||||
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.material3.Icon
|
|
||||||
import androidx.compose.material3.LocalContentColor
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
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.graphics.Brush
|
import androidx.compose.ui.graphics.Brush
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.graphics.ColorFilter
|
import androidx.compose.ui.graphics.ColorFilter
|
||||||
import androidx.compose.ui.graphics.ColorMatrix
|
import androidx.compose.ui.graphics.ColorMatrix
|
||||||
import androidx.compose.ui.graphics.painter.Painter
|
import androidx.compose.ui.graphics.painter.Painter
|
||||||
|
|
@ -20,17 +18,21 @@ import androidx.compose.ui.layout.ContentScale
|
||||||
@Composable
|
@Composable
|
||||||
fun BackgroundImage(
|
fun BackgroundImage(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
tint: Color = LocalContentColor.current,
|
alignment: Alignment = Alignment.TopCenter,
|
||||||
background: Brush = rememberBackgroundGradient(),
|
contentScale: ContentScale = ContentScale.Crop,
|
||||||
|
colorFilter: ColorFilter? = rememberSaturationFilter(saturation = 0f),
|
||||||
painter: Painter,
|
painter: Painter,
|
||||||
|
background: Brush = rememberBackgroundGradient(),
|
||||||
) {
|
) {
|
||||||
Box(
|
Box(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
) {
|
) {
|
||||||
Icon(
|
Image(
|
||||||
modifier = Modifier.matchParentSize(),
|
modifier = Modifier.matchParentSize(),
|
||||||
tint = tint,
|
colorFilter = colorFilter,
|
||||||
painter = painter,
|
painter = painter,
|
||||||
|
alignment = alignment,
|
||||||
|
contentScale = contentScale,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
)
|
)
|
||||||
Box(
|
Box(
|
||||||
|
|
@ -46,11 +48,7 @@ fun BackgroundImage(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
alignment: Alignment = Alignment.TopCenter,
|
alignment: Alignment = Alignment.TopCenter,
|
||||||
contentScale: ContentScale = ContentScale.Crop,
|
contentScale: ContentScale = ContentScale.Crop,
|
||||||
colorFilter: ColorFilter? = remember {
|
colorFilter: ColorFilter? = rememberSaturationFilter(saturation = 0f),
|
||||||
ColorFilter.colorMatrix(
|
|
||||||
ColorMatrix().also { it.setToSaturation(0f) }
|
|
||||||
)
|
|
||||||
},
|
|
||||||
model: Any?,
|
model: Any?,
|
||||||
background: Brush = rememberBackgroundGradient(),
|
background: Brush = rememberBackgroundGradient(),
|
||||||
) {
|
) {
|
||||||
|
|
@ -72,6 +70,17 @@ fun BackgroundImage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun rememberSaturationFilter(
|
||||||
|
saturation: Float = 0f,
|
||||||
|
): ColorFilter {
|
||||||
|
return remember {
|
||||||
|
ColorFilter.colorMatrix(
|
||||||
|
ColorMatrix().also { it.setToSaturation(saturation) }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun rememberBackgroundGradient(
|
fun rememberBackgroundGradient(
|
||||||
from: Float = 0.5f,
|
from: Float = 0.5f,
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ 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
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.clickableInterceptor
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.clickableInterceptor
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
interface BlurredOverlayHostState {
|
interface BlurredOverlayHostState {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,31 @@
|
||||||
package com.pixelized.rplexicon.ui.composable
|
package com.pixelized.rplexicon.ui.composable
|
||||||
|
|
||||||
import androidx.compose.animation.*
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.animation.core.*
|
import androidx.compose.animation.core.FastOutSlowInEasing
|
||||||
|
import androidx.compose.animation.core.animateDpAsState
|
||||||
|
import androidx.compose.animation.core.tween
|
||||||
|
import androidx.compose.animation.fadeIn
|
||||||
|
import androidx.compose.animation.fadeOut
|
||||||
|
import androidx.compose.animation.shrinkHorizontally
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||||
|
import androidx.compose.foundation.layout.BoxWithConstraintsScope
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.RowScope
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.material3.ButtonColors
|
||||||
|
import androidx.compose.material3.ButtonDefaults
|
||||||
|
import androidx.compose.material3.ButtonElevation
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.OutlinedButton
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.zoomable
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.zoomable
|
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ import androidx.compose.ui.window.DialogProperties
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SkillEditDialogUio(
|
data class SkillEditDialogUio(
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SpellEditDialogUio(
|
data class SpellEditDialogUio(
|
||||||
|
|
|
||||||
|
|
@ -8,16 +8,16 @@ import androidx.navigation.NavHostController
|
||||||
import androidx.navigation.NavOptionsBuilder
|
import androidx.navigation.NavOptionsBuilder
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLexicon
|
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLocations
|
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableQuests
|
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.AUTHENTICATION_ROUTE
|
import com.pixelized.rplexicon.ui.navigation.screens.AUTHENTICATION_ROUTE
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableAuthentication
|
import com.pixelized.rplexicon.ui.navigation.screens.composableAuthentication
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableCharacterSheet
|
import com.pixelized.rplexicon.ui.navigation.screens.composableCharacterSheet
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLanding
|
import com.pixelized.rplexicon.ui.navigation.screens.composableLanding
|
||||||
|
import com.pixelized.rplexicon.ui.navigation.screens.composableLexicon
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLexiconDetail
|
import com.pixelized.rplexicon.ui.navigation.screens.composableLexiconDetail
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLocationDetail
|
import com.pixelized.rplexicon.ui.navigation.screens.composableLocationDetail
|
||||||
|
import com.pixelized.rplexicon.ui.navigation.screens.composableLocations
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableQuestDetail
|
import com.pixelized.rplexicon.ui.navigation.screens.composableQuestDetail
|
||||||
|
import com.pixelized.rplexicon.ui.navigation.screens.composableQuests
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableSearch
|
import com.pixelized.rplexicon.ui.navigation.screens.composableSearch
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableSpellDetail
|
import com.pixelized.rplexicon.ui.navigation.screens.composableSpellDetail
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.composableSummary
|
import com.pixelized.rplexicon.ui.navigation.screens.composableSummary
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.Proficienc
|
||||||
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyPreview
|
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyPreview
|
||||||
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyViewModel
|
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyViewModel
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexiconShadow
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.lexiconShadow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.heightIn
|
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.minimumInteractiveComponentSize
|
import androidx.compose.material.minimumInteractiveComponentSize
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.minimumInteractiveComponentSize
|
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.dashedBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.dashedBorder
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun MasteryCircle(
|
fun MasteryCircle(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import com.pixelized.rplexicon.ui.screens.character.composable.character.StatUio
|
||||||
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.CharacterSheetUio
|
import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.CharacterSheetUio
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.passivesBonus
|
import com.pixelized.rplexicon.utilitary.extentions.local.passivesBonus
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.sum
|
import com.pixelized.rplexicon.utilitary.extentions.local.sum
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.masteryMultiplier
|
import com.pixelized.rplexicon.utilitary.extentions.masteryMultiplier
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SkillDetailUio(
|
data class SkillDetailUio(
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.business.SpellBookUseCase
|
import com.pixelized.rplexicon.business.SpellBookUseCase
|
||||||
import com.pixelized.rplexicon.data.model.AssignedSpell
|
import com.pixelized.rplexicon.data.model.AssignedSpell
|
||||||
import com.pixelized.rplexicon.data.model.CharacterSheet
|
import com.pixelized.rplexicon.data.model.CharacterSheet
|
||||||
import com.pixelized.rplexicon.data.network.CharacterSheetFire
|
|
||||||
import com.pixelized.rplexicon.data.model.DiceThrow
|
import com.pixelized.rplexicon.data.model.DiceThrow
|
||||||
import com.pixelized.rplexicon.data.model.Property
|
import com.pixelized.rplexicon.data.model.Property
|
||||||
import com.pixelized.rplexicon.data.model.Throw
|
import com.pixelized.rplexicon.data.model.Throw
|
||||||
|
import com.pixelized.rplexicon.data.network.CharacterSheetFire
|
||||||
import com.pixelized.rplexicon.data.repository.authentication.FirebaseRepository
|
import com.pixelized.rplexicon.data.repository.authentication.FirebaseRepository
|
||||||
import com.pixelized.rplexicon.data.repository.character.CharacterSheetRepository
|
import com.pixelized.rplexicon.data.repository.character.CharacterSheetRepository
|
||||||
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class AlterationDetailUio(
|
data class AlterationDetailUio(
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,10 @@ import androidx.compose.material3.Surface
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.window.Dialog
|
|
||||||
import androidx.compose.ui.window.DialogProperties
|
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import com.pixelized.rplexicon.ui.composable.CategoryHeader
|
import com.pixelized.rplexicon.ui.composable.CategoryHeader
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AlterationItem
|
import com.pixelized.rplexicon.ui.screens.character.composable.actions.AlterationItem
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,7 @@ import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.ColumnScope
|
import androidx.compose.foundation.layout.ColumnScope
|
||||||
import androidx.compose.foundation.layout.IntrinsicSize
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.height
|
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.sizeIn
|
import androidx.compose.foundation.layout.sizeIn
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
|
|
@ -57,7 +54,7 @@ import com.pixelized.rplexicon.ui.screens.character.composable.character.StatUio
|
||||||
import com.pixelized.rplexicon.ui.screens.character.composable.preview.rememberCharacterSheetStatePreview
|
import com.pixelized.rplexicon.ui.screens.character.composable.preview.rememberCharacterSheetStatePreview
|
||||||
import com.pixelized.rplexicon.ui.screens.character.pages.actions.HandleSkillDetailDialog
|
import com.pixelized.rplexicon.ui.screens.character.pages.actions.HandleSkillDetailDialog
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class CharacterSheetUio(
|
data class CharacterSheetUio(
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.draw.rotate
|
import androidx.compose.ui.draw.rotate
|
||||||
import androidx.compose.ui.graphics.Brush
|
import androidx.compose.ui.graphics.Brush
|
||||||
import androidx.compose.ui.graphics.ColorFilter
|
import androidx.compose.ui.graphics.ColorFilter
|
||||||
import androidx.compose.ui.graphics.RectangleShape
|
|
||||||
import androidx.compose.ui.graphics.Shape
|
import androidx.compose.ui.graphics.Shape
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,15 @@ package com.pixelized.rplexicon.ui.screens.landing
|
||||||
|
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
|
import androidx.compose.animation.core.LinearEasing
|
||||||
|
import androidx.compose.animation.core.RepeatMode
|
||||||
|
import androidx.compose.animation.core.animateFloat
|
||||||
|
import androidx.compose.animation.core.infiniteRepeatable
|
||||||
|
import androidx.compose.animation.core.rememberInfiniteTransition
|
||||||
|
import androidx.compose.animation.core.tween
|
||||||
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.ScrollState
|
import androidx.compose.foundation.ScrollState
|
||||||
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
|
@ -14,6 +22,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||||
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
|
|
@ -22,7 +31,12 @@ 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.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.composed
|
||||||
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.graphics.RectangleShape
|
||||||
|
import androidx.compose.ui.graphics.TransformOrigin
|
||||||
|
import androidx.compose.ui.graphics.graphicsLayer
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontStyle
|
import androidx.compose.ui.text.font.FontStyle
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
|
@ -31,7 +45,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.composable.BackgroundImage
|
import com.pixelized.rplexicon.ui.composable.rememberBackgroundGradient
|
||||||
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
|
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.navigateToCharacterSheet
|
import com.pixelized.rplexicon.ui.navigation.screens.navigateToCharacterSheet
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.navigateToLexicon
|
import com.pixelized.rplexicon.ui.navigation.screens.navigateToLexicon
|
||||||
|
|
@ -42,8 +56,7 @@ import com.pixelized.rplexicon.ui.navigation.screens.navigateToSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LandingScreen() {
|
fun LandingScreen() {
|
||||||
|
|
@ -56,7 +69,7 @@ fun LandingScreen() {
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.navigationBarsPadding(),
|
.navigationBarsPadding(),
|
||||||
padding = PaddingValues(
|
paddings = PaddingValues(
|
||||||
start = 16.dp,
|
start = 16.dp,
|
||||||
top = MaterialTheme.lexicon.dimens.detailPadding,
|
top = MaterialTheme.lexicon.dimens.detailPadding,
|
||||||
end = 16.dp,
|
end = 16.dp,
|
||||||
|
|
@ -82,8 +95,13 @@ fun LandingScreen() {
|
||||||
@Composable
|
@Composable
|
||||||
private fun LandingContent(
|
private fun LandingContent(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
padding: PaddingValues = PaddingValues(16.dp),
|
|
||||||
scrollState: ScrollState = rememberScrollState(),
|
scrollState: ScrollState = rememberScrollState(),
|
||||||
|
paddings: PaddingValues = PaddingValues(
|
||||||
|
start = 16.dp,
|
||||||
|
top = MaterialTheme.lexicon.dimens.detailPadding,
|
||||||
|
end = 16.dp,
|
||||||
|
bottom = 16.dp,
|
||||||
|
),
|
||||||
sectionPadding: Dp = 32.dp,
|
sectionPadding: Dp = 32.dp,
|
||||||
onCharacter: (String) -> Unit,
|
onCharacter: (String) -> Unit,
|
||||||
onSearch: () -> Unit,
|
onSearch: () -> Unit,
|
||||||
|
|
@ -95,19 +113,46 @@ private fun LandingContent(
|
||||||
Box(
|
Box(
|
||||||
modifier = modifier.verticalScroll(scrollState),
|
modifier = modifier.verticalScroll(scrollState),
|
||||||
) {
|
) {
|
||||||
BackgroundImage(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.aspectRatio(1f)
|
.aspectRatio(1f)
|
||||||
.scrollOffset(scrollState) { it / 2 },
|
.clip(RectangleShape),
|
||||||
contentScale = ContentScale.Crop,
|
) {
|
||||||
model = R.drawable.im_naderius.uri,
|
Image(
|
||||||
)
|
modifier = Modifier
|
||||||
|
.matchParentSize()
|
||||||
|
.scrollOffset(scrollState) { it / 2 },
|
||||||
|
painter = painterResource(id = R.drawable.im_naderius_background),
|
||||||
|
contentDescription = null,
|
||||||
|
)
|
||||||
|
Image(
|
||||||
|
modifier = Modifier
|
||||||
|
.matchParentSize()
|
||||||
|
.scrollOffset(scrollState) { it / 3 },
|
||||||
|
painter = painterResource(id = R.drawable.im_naderius_foreground),
|
||||||
|
contentDescription = null,
|
||||||
|
)
|
||||||
|
Image(
|
||||||
|
modifier = Modifier
|
||||||
|
.matchParentSize()
|
||||||
|
.offset(y = (-16).dp)
|
||||||
|
.scrollOffset(scrollState) { it / 3 }
|
||||||
|
.magic(),
|
||||||
|
painter = painterResource(id = R.drawable.im_naderius_dice),
|
||||||
|
contentDescription = null,
|
||||||
|
)
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.matchParentSize()
|
||||||
|
.background(brush = rememberBackgroundGradient()),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.padding(paddingValues = padding),
|
.padding(paddingValues = paddings),
|
||||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -302,6 +347,42 @@ private fun LandingContent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Modifier.magic(): Modifier = composed {
|
||||||
|
val transition = rememberInfiniteTransition(
|
||||||
|
label = "Magic transition",
|
||||||
|
)
|
||||||
|
val rotation = transition.animateFloat(
|
||||||
|
initialValue = 0f,
|
||||||
|
targetValue = 360f,
|
||||||
|
animationSpec = infiniteRepeatable(
|
||||||
|
animation = tween(
|
||||||
|
durationMillis = 12000,
|
||||||
|
easing = LinearEasing,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
label = "Magic rotation",
|
||||||
|
)
|
||||||
|
val translationY = transition.animateFloat(
|
||||||
|
initialValue = -10f,
|
||||||
|
targetValue = -40f,
|
||||||
|
animationSpec = infiniteRepeatable(
|
||||||
|
animation = tween(
|
||||||
|
durationMillis = 8000,
|
||||||
|
),
|
||||||
|
repeatMode = RepeatMode.Reverse,
|
||||||
|
),
|
||||||
|
label = "Magic translationY",
|
||||||
|
)
|
||||||
|
return@composed this.graphicsLayer {
|
||||||
|
this.transformOrigin = TransformOrigin(
|
||||||
|
pivotFractionX = 0.375f,
|
||||||
|
pivotFractionY = 0.625f,
|
||||||
|
)
|
||||||
|
this.rotationZ = rotation.value
|
||||||
|
this.translationY = translationY.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@Preview(uiMode = UI_MODE_NIGHT_NO)
|
@Preview(uiMode = UI_MODE_NIGHT_NO)
|
||||||
@Preview(uiMode = UI_MODE_NIGHT_YES)
|
@Preview(uiMode = UI_MODE_NIGHT_YES)
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotate
|
import com.pixelized.rplexicon.utilitary.annotate
|
||||||
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
||||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||||
import com.pixelized.rplexicon.utilitary.styleWith
|
import com.pixelized.rplexicon.utilitary.styleWith
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,9 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
||||||
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
|
||||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
class LexiconGroupUio(
|
class LexiconGroupUio(
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,10 @@ class LexiconViewModel @Inject constructor(
|
||||||
|
|
||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
launch {
|
launch(Dispatchers.IO) {
|
||||||
orderRepository.data.combine(lexiconRepository.data) { _, lexicon -> lexicon }
|
orderRepository.data.combine(lexiconRepository.data) { _, lexicon -> lexicon }
|
||||||
.collect { items ->
|
.collect { items ->
|
||||||
_items.value = items
|
val lexicons = items
|
||||||
.sortedBy { it.name }
|
.sortedBy { it.name }
|
||||||
.groupBy(
|
.groupBy(
|
||||||
keySelector = {
|
keySelector = {
|
||||||
|
|
@ -74,6 +74,10 @@ class LexiconViewModel @Inject constructor(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.sortedBy { orderRepository.findLexiconOrder(quest = it.category) }
|
.sortedBy { orderRepository.findLexiconOrder(quest = it.category) }
|
||||||
|
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
_items.value = lexicons
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
launch {
|
launch {
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ import com.pixelized.rplexicon.utilitary.annotate
|
||||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||||
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
||||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||||
import com.pixelized.rplexicon.utilitary.styleWith
|
import com.pixelized.rplexicon.utilitary.styleWith
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class LocationGroupUio(
|
data class LocationGroupUio(
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ import com.pixelized.rplexicon.utilitary.LOS_HOLLOW
|
||||||
import com.pixelized.rplexicon.utilitary.annotate
|
import com.pixelized.rplexicon.utilitary.annotate
|
||||||
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
||||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||||
import com.pixelized.rplexicon.utilitary.styleWith
|
import com.pixelized.rplexicon.utilitary.styleWith
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
||||||
import com.pixelized.rplexicon.utilitary.LOS_HOLLOW
|
import com.pixelized.rplexicon.utilitary.LOS_HOLLOW
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class QuestGroupUio(
|
data class QuestGroupUio(
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,9 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.criticalShader
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.rememberITimeState
|
||||||
|
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class RollDiceUio(
|
data class RollDiceUio(
|
||||||
|
|
@ -122,8 +125,19 @@ private fun Dice(
|
||||||
animationSpec = it.animationSpec,
|
animationSpec = it.animationSpec,
|
||||||
label = "AnimatedRotation"
|
label = "AnimatedRotation"
|
||||||
)
|
)
|
||||||
|
val isCritical = animateFloatAsState(
|
||||||
|
targetValue = if (it.isCriticalSuccess) 1.0f else 0f,
|
||||||
|
label = "animatedCritical",
|
||||||
|
animationSpec = tween(1500),
|
||||||
|
)
|
||||||
Icon(
|
Icon(
|
||||||
modifier = modifier.rotate(degrees = animatedRotation.value % 360),
|
modifier = modifier
|
||||||
|
.rotate(degrees = animatedRotation.value % 360)
|
||||||
|
.criticalShader(
|
||||||
|
iDefault = MaterialTheme.colorScheme.primary,
|
||||||
|
isCritical = isCritical.value,
|
||||||
|
iTime = rememberITimeState().value,
|
||||||
|
),
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
painter = painterResource(id = it.icon),
|
painter = painterResource(id = it.icon),
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,8 @@ import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.screens.rolls.composable.ThrowsCardUio.Throw.Type
|
import com.pixelized.rplexicon.ui.screens.rolls.composable.ThrowsCardUio.Throw.Type
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.annotatedSpan
|
import com.pixelized.rplexicon.utilitary.extentions.annotatedSpan
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ import com.pixelized.rplexicon.ui.screens.search.item.SearchItemUio.SpellSearchI
|
||||||
import com.pixelized.rplexicon.ui.screens.search.item.SpellSearchItem
|
import com.pixelized.rplexicon.ui.screens.search.item.SpellSearchItem
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.PUC_FULL
|
import com.pixelized.rplexicon.utilitary.PUC_FULL
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexiconShadow
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.lexiconShadow
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SearchFormUio(
|
data class SearchFormUio(
|
||||||
|
|
@ -220,14 +220,14 @@ fun SearchScreenPreview() {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
listOf(
|
listOf(
|
||||||
LocationSearchItemUio(
|
LocationSearchItemUio(
|
||||||
id = "",
|
id = "0",
|
||||||
category = AnnotatedString(text = "Cartes $PUC_FULL Région de Vallaki"),
|
category = AnnotatedString(text = "Cartes $PUC_FULL Région de Vallaki"),
|
||||||
title = AnnotatedString(text = "Vallaki"),
|
title = AnnotatedString(text = "Vallaki"),
|
||||||
description = null,
|
description = null,
|
||||||
destination = null,
|
destination = null,
|
||||||
),
|
),
|
||||||
LocationSearchItemUio(
|
LocationSearchItemUio(
|
||||||
id = "",
|
id = "1",
|
||||||
category = AnnotatedString(text = "Cartes $PUC_FULL Contré de la brume"),
|
category = AnnotatedString(text = "Cartes $PUC_FULL Contré de la brume"),
|
||||||
title = AnnotatedString(text = "Barovie"),
|
title = AnnotatedString(text = "Barovie"),
|
||||||
description = AnnotatedString(text = "Contré sombre et maudite somise au joug de Stradh von Zarovich"),
|
description = AnnotatedString(text = "Contré sombre et maudite somise au joug de Stradh von Zarovich"),
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,12 @@ import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.shadow
|
import androidx.compose.ui.draw.shadow
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.ColorFilter
|
||||||
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontStyle
|
import androidx.compose.ui.text.font.FontStyle
|
||||||
|
|
@ -47,7 +50,7 @@ import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.annotate
|
import com.pixelized.rplexicon.utilitary.annotate
|
||||||
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
import com.pixelized.rplexicon.utilitary.extentions.searchCriterion
|
||||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||||
import com.pixelized.rplexicon.utilitary.styleWith
|
import com.pixelized.rplexicon.utilitary.styleWith
|
||||||
|
|
@ -100,6 +103,7 @@ private fun SpellDetailContent(
|
||||||
val typography = MaterialTheme.lexicon.typography
|
val typography = MaterialTheme.lexicon.typography
|
||||||
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
||||||
val dropCapRegex = remember { dropCapRegex() }
|
val dropCapRegex = remember { dropCapRegex() }
|
||||||
|
val colorScheme = MaterialTheme.colorScheme
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
|
|
@ -131,7 +135,11 @@ private fun SpellDetailContent(
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.aspectRatio(ratio = 1f)
|
.aspectRatio(ratio = 1f)
|
||||||
.scrollOffset(scrollState = state) { -it / 2 },
|
.scrollOffset(scrollState = state) { -it / 2 },
|
||||||
tint = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.2f),
|
alignment = Alignment.Center,
|
||||||
|
contentScale = ContentScale.Fit,
|
||||||
|
colorFilter = remember {
|
||||||
|
ColorFilter.tint(colorScheme.onSurface.copy(alpha = 0.2f))
|
||||||
|
},
|
||||||
painter = painterResource(id = detail.icon),
|
painter = painterResource(id = detail.icon),
|
||||||
)
|
)
|
||||||
Column(
|
Column(
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import androidx.lifecycle.viewModelScope
|
||||||
import com.pixelized.rplexicon.data.repository.character.DescriptionRepository
|
import com.pixelized.rplexicon.data.repository.character.DescriptionRepository
|
||||||
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
||||||
import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
|
import com.pixelized.rplexicon.ui.composable.error.FetchErrorUio
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.lexiconDetailArgument
|
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.spellDetailArgument
|
import com.pixelized.rplexicon.ui.navigation.screens.spellDetailArgument
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.icon
|
import com.pixelized.rplexicon.utilitary.extentions.local.icon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.label
|
import com.pixelized.rplexicon.utilitary.extentions.local.label
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberAttributesSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberAttributesSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class AttributesSummaryUio(
|
data class AttributesSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberCharacteristicsSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberCharacteristicsSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class CharacteristicsSummaryUio(
|
data class CharacteristicsSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberPassivesSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberPassivesSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class PassivesSummaryUio(
|
data class PassivesSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberProficienciesSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberProficienciesSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class ProficiencySummaryUio(
|
data class ProficiencySummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberSavingThrowsSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberSavingThrowsSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SavingThrowsSummaryUio(
|
data class SavingThrowsSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRow
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberSpellsSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberSpellsSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SpellSummaryUio(
|
data class SpellSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,9 @@ import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberStatusSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberStatusSummary
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.verticalDivider
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.verticalDivider
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class StatusSummaryUio(
|
data class StatusSummaryUio(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.verticalDivider
|
import com.pixelized.rplexicon.utilitary.extentions.modifier.verticalDivider
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
data class SummaryRowUio(
|
data class SummaryRowUio(
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import androidx.compose.runtime.remember
|
||||||
import com.pixelized.rplexicon.R
|
import com.pixelized.rplexicon.R
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.ProficiencySummaryUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.ProficiencySummaryUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryRowUio
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.SummaryCellUio
|
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.proficiency
|
import com.pixelized.rplexicon.ui.screens.summary.composable.common.proficiency
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,8 @@ import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
|
|
@ -22,16 +20,13 @@ import androidx.compose.material3.Surface
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.derivedStateOf
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Brush
|
import androidx.compose.ui.graphics.Brush
|
||||||
import androidx.compose.ui.layout.onSizeChanged
|
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.Density
|
import androidx.compose.ui.unit.Density
|
||||||
import androidx.compose.ui.unit.IntSize
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummary
|
import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummary
|
||||||
import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummaryUio
|
import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummaryUio
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ import com.pixelized.rplexicon.utilitary.extentions.local.highestSpellLevel
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.passivesBonus
|
import com.pixelized.rplexicon.utilitary.extentions.local.passivesBonus
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.spell
|
import com.pixelized.rplexicon.utilitary.extentions.local.spell
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.local.sum
|
import com.pixelized.rplexicon.utilitary.extentions.local.sum
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.masteryMultiplier
|
import com.pixelized.rplexicon.utilitary.extentions.masteryMultiplier
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
package com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
|
|
||||||
|
import android.graphics.Color.valueOf
|
||||||
|
import android.graphics.RuntimeShader
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.compose.animation.core.withInfiniteAnimationFrameMillis
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.Stable
|
||||||
|
import androidx.compose.runtime.State
|
||||||
|
import androidx.compose.runtime.produceState
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.drawWithCache
|
||||||
|
import androidx.compose.ui.graphics.BlendMode
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.CompositingStrategy
|
||||||
|
import androidx.compose.ui.graphics.ShaderBrush
|
||||||
|
import androidx.compose.ui.graphics.graphicsLayer
|
||||||
|
import org.intellij.lang.annotations.Language
|
||||||
|
|
||||||
|
fun Modifier.criticalShader(
|
||||||
|
isCritical: Float,
|
||||||
|
iTime: Float,
|
||||||
|
iDefault: Color,
|
||||||
|
): Modifier = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
this
|
||||||
|
.graphicsLayer {
|
||||||
|
compositingStrategy = CompositingStrategy.Offscreen
|
||||||
|
}
|
||||||
|
.drawWithCache {
|
||||||
|
val shader = RuntimeShader(CRITICAL_SHADER)
|
||||||
|
val shaderBrush = ShaderBrush(shader)
|
||||||
|
shader.setFloatUniform("iResolution", size.width, size.height)
|
||||||
|
shader.setFloatUniform("isCritical", isCritical)
|
||||||
|
shader.setColorUniform("iDefault", valueOf(iDefault.red, iDefault.green, iDefault.blue))
|
||||||
|
|
||||||
|
onDrawWithContent {
|
||||||
|
drawContent()
|
||||||
|
shader.setFloatUniform("iTime", iTime)
|
||||||
|
drawRect(brush = shaderBrush, blendMode = BlendMode.SrcAtop)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@Stable
|
||||||
|
fun rememberITimeState(speed: Float = 1f): State<Float> {
|
||||||
|
return produceState(0f) {
|
||||||
|
while (true) {
|
||||||
|
withInfiniteAnimationFrameMillis {
|
||||||
|
value = it / 1000f * speed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Language("AGSL")
|
||||||
|
val CRITICAL_SHADER = """
|
||||||
|
uniform float2 iResolution;
|
||||||
|
uniform float iTime;
|
||||||
|
uniform float isCritical;
|
||||||
|
layout(color) uniform half4 iDefault;
|
||||||
|
|
||||||
|
half4 main(float2 fragCoord) {
|
||||||
|
// Normalized pixel coordinates (from 0 to 1)
|
||||||
|
float2 uv = fragCoord.xy / iResolution;
|
||||||
|
// Time varying pixel color
|
||||||
|
float2 color = 0.5 + 0.5 * cos(iTime + uv.xy * 2.0 + float2(0, 3.14));
|
||||||
|
// Output to screen
|
||||||
|
return mix(iDefault, float4(color, 1.0, 1.0), isCritical);
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.pixelized.rplexicon.utilitary.extentions
|
package com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
|
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.pixelized.rplexicon.utilitary.extentions
|
package com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||||
|
|
||||||
import androidx.compose.animation.core.FiniteAnimationSpec
|
import androidx.compose.animation.core.FiniteAnimationSpec
|
||||||
import androidx.compose.animation.core.Transition
|
import androidx.compose.animation.core.Transition
|
||||||
|
|
@ -43,6 +43,7 @@ import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.google.accompanist.placeholder.PlaceholderHighlight
|
import com.google.accompanist.placeholder.PlaceholderHighlight
|
||||||
import com.google.accompanist.placeholder.placeholder
|
import com.google.accompanist.placeholder.placeholder
|
||||||
|
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||||
|
|
||||||
fun Modifier.placeholder(
|
fun Modifier.placeholder(
|
||||||
color: Color = Color.Unspecified,
|
color: Color = Color.Unspecified,
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 28 KiB |
BIN
app/src/main/res/drawable/im_naderius_background.webp
Normal file
BIN
app/src/main/res/drawable/im_naderius_background.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
BIN
app/src/main/res/drawable/im_naderius_dice.webp
Normal file
BIN
app/src/main/res/drawable/im_naderius_dice.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
BIN
app/src/main/res/drawable/im_naderius_foreground.webp
Normal file
BIN
app/src/main/res/drawable/im_naderius_foreground.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Loading…
Add table
Add a link
Reference in a new issue