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.rememberBlurredRollOverlayHostState
|
||||
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
|
||||
|
||||
val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import coil.ImageLoader
|
|||
import coil.ImageLoaderFactory
|
||||
import coil.disk.DiskCache
|
||||
import coil.memory.MemoryCache
|
||||
import coil.size.Precision
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
|
||||
@HiltAndroidApp
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
package com.pixelized.rplexicon.ui.composable
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.graphics.ColorMatrix
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
|
|
@ -20,17 +18,21 @@ import androidx.compose.ui.layout.ContentScale
|
|||
@Composable
|
||||
fun BackgroundImage(
|
||||
modifier: Modifier = Modifier,
|
||||
tint: Color = LocalContentColor.current,
|
||||
background: Brush = rememberBackgroundGradient(),
|
||||
alignment: Alignment = Alignment.TopCenter,
|
||||
contentScale: ContentScale = ContentScale.Crop,
|
||||
colorFilter: ColorFilter? = rememberSaturationFilter(saturation = 0f),
|
||||
painter: Painter,
|
||||
background: Brush = rememberBackgroundGradient(),
|
||||
) {
|
||||
Box(
|
||||
modifier = modifier
|
||||
) {
|
||||
Icon(
|
||||
Image(
|
||||
modifier = Modifier.matchParentSize(),
|
||||
tint = tint,
|
||||
colorFilter = colorFilter,
|
||||
painter = painter,
|
||||
alignment = alignment,
|
||||
contentScale = contentScale,
|
||||
contentDescription = null,
|
||||
)
|
||||
Box(
|
||||
|
|
@ -46,11 +48,7 @@ fun BackgroundImage(
|
|||
modifier: Modifier = Modifier,
|
||||
alignment: Alignment = Alignment.TopCenter,
|
||||
contentScale: ContentScale = ContentScale.Crop,
|
||||
colorFilter: ColorFilter? = remember {
|
||||
ColorFilter.colorMatrix(
|
||||
ColorMatrix().also { it.setToSaturation(0f) }
|
||||
)
|
||||
},
|
||||
colorFilter: ColorFilter? = rememberSaturationFilter(saturation = 0f),
|
||||
model: Any?,
|
||||
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
|
||||
fun rememberBackgroundGradient(
|
||||
from: Float = 0.5f,
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ import androidx.compose.ui.draw.BlurredEdgeTreatment
|
|||
import androidx.compose.ui.draw.blur
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
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.modifier.clickableInterceptor
|
||||
|
||||
@Stable
|
||||
interface BlurredOverlayHostState {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,31 @@
|
|||
package com.pixelized.rplexicon.ui.composable
|
||||
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.*
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
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.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
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.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
|||
import androidx.lifecycle.ViewModel
|
||||
import com.pixelized.rplexicon.R
|
||||
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.zoomable
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ import androidx.compose.ui.window.DialogProperties
|
|||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.composable.NumberPicker
|
||||
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.modifier.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||
|
||||
@Stable
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
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.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class SkillEditDialogUio(
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ import androidx.compose.ui.window.Dialog
|
|||
import androidx.compose.ui.window.DialogProperties
|
||||
import com.pixelized.rplexicon.R
|
||||
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.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class SpellEditDialogUio(
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@ import androidx.navigation.NavHostController
|
|||
import androidx.navigation.NavOptionsBuilder
|
||||
import androidx.navigation.compose.NavHost
|
||||
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.composableAuthentication
|
||||
import com.pixelized.rplexicon.ui.navigation.screens.composableCharacterSheet
|
||||
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.composableLocationDetail
|
||||
import com.pixelized.rplexicon.ui.navigation.screens.composableLocations
|
||||
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.composableSpellDetail
|
||||
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.ProficiencyViewModel
|
||||
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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.Column
|
|||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.heightIn
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.minimumInteractiveComponentSize
|
||||
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.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.minimumInteractiveComponentSize
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Surface
|
||||
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 com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.dashedBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.dashedBorder
|
||||
|
||||
@Composable
|
||||
fun MasteryCircle(
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||
import androidx.compose.ui.unit.dp
|
||||
import com.pixelized.rplexicon.R
|
||||
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
|
||||
|
||||
@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.utilitary.extentions.local.passivesBonus
|
||||
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.modifier
|
||||
import javax.inject.Inject
|
||||
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.DialogProperties
|
||||
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.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class SkillDetailUio(
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ import com.pixelized.rplexicon.R
|
|||
import com.pixelized.rplexicon.business.SpellBookUseCase
|
||||
import com.pixelized.rplexicon.data.model.AssignedSpell
|
||||
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.Property
|
||||
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.character.CharacterSheetRepository
|
||||
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.ui.theme.LexiconTheme
|
||||
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.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class AlterationDetailUio(
|
||||
|
|
|
|||
|
|
@ -13,13 +13,10 @@ import androidx.compose.material3.Surface
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
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 com.pixelized.rplexicon.ui.composable.CategoryHeader
|
||||
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.Column
|
||||
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.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.sizeIn
|
||||
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.pages.actions.HandleSkillDetailDialog
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class CharacterSheetUio(
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import androidx.compose.ui.draw.clip
|
|||
import androidx.compose.ui.draw.rotate
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.graphics.RectangleShape
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
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_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.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
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.height
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.offset
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
|
|
@ -22,7 +31,12 @@ import androidx.compose.material3.Surface
|
|||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
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.text.font.FontStyle
|
||||
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 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.screens.navigateToCharacterSheet
|
||||
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.utilitary.annotateMajWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.scrollOffset
|
||||
import com.pixelized.rplexicon.utilitary.extentions.uri
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.scrollOffset
|
||||
|
||||
@Composable
|
||||
fun LandingScreen() {
|
||||
|
|
@ -56,7 +69,7 @@ fun LandingScreen() {
|
|||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.navigationBarsPadding(),
|
||||
padding = PaddingValues(
|
||||
paddings = PaddingValues(
|
||||
start = 16.dp,
|
||||
top = MaterialTheme.lexicon.dimens.detailPadding,
|
||||
end = 16.dp,
|
||||
|
|
@ -82,8 +95,13 @@ fun LandingScreen() {
|
|||
@Composable
|
||||
private fun LandingContent(
|
||||
modifier: Modifier = Modifier,
|
||||
padding: PaddingValues = PaddingValues(16.dp),
|
||||
scrollState: ScrollState = rememberScrollState(),
|
||||
paddings: PaddingValues = PaddingValues(
|
||||
start = 16.dp,
|
||||
top = MaterialTheme.lexicon.dimens.detailPadding,
|
||||
end = 16.dp,
|
||||
bottom = 16.dp,
|
||||
),
|
||||
sectionPadding: Dp = 32.dp,
|
||||
onCharacter: (String) -> Unit,
|
||||
onSearch: () -> Unit,
|
||||
|
|
@ -95,19 +113,46 @@ private fun LandingContent(
|
|||
Box(
|
||||
modifier = modifier.verticalScroll(scrollState),
|
||||
) {
|
||||
BackgroundImage(
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.aspectRatio(1f)
|
||||
.scrollOffset(scrollState) { it / 2 },
|
||||
contentScale = ContentScale.Crop,
|
||||
model = R.drawable.im_naderius.uri,
|
||||
)
|
||||
.clip(RectangleShape),
|
||||
) {
|
||||
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(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(paddingValues = padding),
|
||||
.padding(paddingValues = paddings),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
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
|
||||
@Preview(uiMode = UI_MODE_NIGHT_NO)
|
||||
@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.dropCapRegex
|
||||
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.highlightRegex
|
||||
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.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.LOS_FULL
|
||||
import com.pixelized.rplexicon.utilitary.annotateMajWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||
|
||||
@Stable
|
||||
class LexiconGroupUio(
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@ class LexiconViewModel @Inject constructor(
|
|||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
launch {
|
||||
launch(Dispatchers.IO) {
|
||||
orderRepository.data.combine(lexiconRepository.data) { _, lexicon -> lexicon }
|
||||
.collect { items ->
|
||||
_items.value = items
|
||||
val lexicons = items
|
||||
.sortedBy { it.name }
|
||||
.groupBy(
|
||||
keySelector = {
|
||||
|
|
@ -74,6 +74,10 @@ class LexiconViewModel @Inject constructor(
|
|||
)
|
||||
}
|
||||
.sortedBy { orderRepository.findLexiconOrder(quest = it.category) }
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
_items.value = lexicons
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ import com.pixelized.rplexicon.utilitary.annotate
|
|||
import com.pixelized.rplexicon.utilitary.annotateWithDropCap
|
||||
import com.pixelized.rplexicon.utilitary.dropCapRegex
|
||||
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.highlightRegex
|
||||
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.utilitary.LOS_FULL
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||
|
||||
@Stable
|
||||
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.dropCapRegex
|
||||
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.highlightRegex
|
||||
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_HOLLOW
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.placeholder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.placeholder
|
||||
|
||||
@Stable
|
||||
data class QuestGroupUio(
|
||||
|
|
|
|||
|
|
@ -46,6 +46,9 @@ import androidx.compose.ui.unit.dp
|
|||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.criticalShader
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.rememberITimeState
|
||||
|
||||
|
||||
@Stable
|
||||
data class RollDiceUio(
|
||||
|
|
@ -122,8 +125,19 @@ private fun Dice(
|
|||
animationSpec = it.animationSpec,
|
||||
label = "AnimatedRotation"
|
||||
)
|
||||
val isCritical = animateFloatAsState(
|
||||
targetValue = if (it.isCriticalSuccess) 1.0f else 0f,
|
||||
label = "animatedCritical",
|
||||
animationSpec = tween(1500),
|
||||
)
|
||||
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,
|
||||
painter = painterResource(id = it.icon),
|
||||
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.theme.LexiconTheme
|
||||
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.modifier.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.highlightRegex
|
||||
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.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.PUC_FULL
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexiconShadow
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.lexiconShadow
|
||||
|
||||
@Stable
|
||||
data class SearchFormUio(
|
||||
|
|
@ -220,14 +220,14 @@ fun SearchScreenPreview() {
|
|||
mutableStateOf(
|
||||
listOf(
|
||||
LocationSearchItemUio(
|
||||
id = "",
|
||||
id = "0",
|
||||
category = AnnotatedString(text = "Cartes $PUC_FULL Région de Vallaki"),
|
||||
title = AnnotatedString(text = "Vallaki"),
|
||||
description = null,
|
||||
destination = null,
|
||||
),
|
||||
LocationSearchItemUio(
|
||||
id = "",
|
||||
id = "1",
|
||||
category = AnnotatedString(text = "Cartes $PUC_FULL Contré de la brume"),
|
||||
title = AnnotatedString(text = "Barovie"),
|
||||
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.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.shadow
|
||||
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.stringResource
|
||||
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.dropCapRegex
|
||||
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.highlightRegex
|
||||
import com.pixelized.rplexicon.utilitary.styleWith
|
||||
|
|
@ -100,6 +103,7 @@ private fun SpellDetailContent(
|
|||
val typography = MaterialTheme.lexicon.typography
|
||||
val highlightRegex = remember(highlight) { highlightRegex(terms = highlight.searchCriterion()) }
|
||||
val dropCapRegex = remember { dropCapRegex() }
|
||||
val colorScheme = MaterialTheme.colorScheme
|
||||
|
||||
Scaffold(
|
||||
modifier = modifier,
|
||||
|
|
@ -131,7 +135,11 @@ private fun SpellDetailContent(
|
|||
.fillMaxWidth()
|
||||
.aspectRatio(ratio = 1f)
|
||||
.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),
|
||||
)
|
||||
Column(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import androidx.lifecycle.viewModelScope
|
|||
import com.pixelized.rplexicon.data.repository.character.DescriptionRepository
|
||||
import com.pixelized.rplexicon.data.repository.character.SpellRepository
|
||||
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.utilitary.extentions.local.icon
|
||||
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.preview.statistic.rememberAttributesSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
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.preview.statistic.rememberCharacteristicsSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
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.preview.statistic.rememberPassivesSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
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.preview.statistic.rememberProficienciesSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
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.preview.statistic.rememberSavingThrowsSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
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.preview.statistic.rememberSpellsSummary
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
|
||||
@Stable
|
||||
data class SpellSummaryUio(
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ import androidx.compose.ui.unit.dp
|
|||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.screens.summary.composable.preview.statistic.rememberStatusSummary
|
||||
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.verticalDivider
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.ddBorder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.verticalDivider
|
||||
|
||||
@Stable
|
||||
data class StatusSummaryUio(
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.pixelized.rplexicon.R
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import com.pixelized.rplexicon.utilitary.extentions.verticalDivider
|
||||
import com.pixelized.rplexicon.utilitary.extentions.modifier.verticalDivider
|
||||
|
||||
@Stable
|
||||
data class SummaryRowUio(
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import androidx.compose.runtime.remember
|
|||
import com.pixelized.rplexicon.R
|
||||
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.SummaryCellUio
|
||||
import com.pixelized.rplexicon.ui.screens.summary.composable.common.proficiency
|
||||
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -10,10 +10,8 @@ import androidx.compose.foundation.background
|
|||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
|
|
@ -22,16 +20,13 @@ import androidx.compose.material3.Surface
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.layout.onSizeChanged
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.IntSize
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.pixelized.rplexicon.ui.screens.summary.composable.AttributesSummary
|
||||
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.spell
|
||||
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.modifier
|
||||
import com.pixelized.rplexicon.utilitary.extentions.toLabel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
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.
|
||||
*/
|
||||
|
||||
package com.pixelized.rplexicon.utilitary.extentions
|
||||
package com.pixelized.rplexicon.utilitary.extentions.modifier
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
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.Transition
|
||||
|
|
@ -43,6 +43,7 @@ import androidx.compose.ui.unit.Dp
|
|||
import androidx.compose.ui.unit.dp
|
||||
import com.google.accompanist.placeholder.PlaceholderHighlight
|
||||
import com.google.accompanist.placeholder.placeholder
|
||||
import com.pixelized.rplexicon.utilitary.extentions.lexicon
|
||||
|
||||
fun Modifier.placeholder(
|
||||
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