diff --git a/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt b/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt index 97e959a..b2a26e8 100644 --- a/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt +++ b/app/src/main/java/com/pixelized/rplexicon/MainActivity.kt @@ -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) diff --git a/app/src/main/java/com/pixelized/rplexicon/MainApplication.kt b/app/src/main/java/com/pixelized/rplexicon/MainApplication.kt index 4dd910a..caa5815 100644 --- a/app/src/main/java/com/pixelized/rplexicon/MainApplication.kt +++ b/app/src/main/java/com/pixelized/rplexicon/MainApplication.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/BackgroundImage.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/BackgroundImage.kt index 51008c6..507a34c 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/BackgroundImage.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/BackgroundImage.kt @@ -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, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/BlurredOverlayHost.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/BlurredOverlayHost.kt index b9d2f3e..761b890 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/BlurredOverlayHost.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/BlurredOverlayHost.kt @@ -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 { diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/FloatingActionButton.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/FloatingActionButton.kt index 2e1fcbb..b05f258 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/FloatingActionButton.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/FloatingActionButton.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/ImageDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/ImageDialog.kt index 7df8956..6c73ddf 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/ImageDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/ImageDialog.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt index 3362490..49723cd 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleHitPointEditDialog.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSkillEditDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSkillEditDialog.kt index 7982814..c415ab6 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSkillEditDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSkillEditDialog.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSpellEditDialog.kt b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSpellEditDialog.kt index 02bccad..44c074b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSpellEditDialog.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/composable/edit/HandleSpellEditDialog.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt index 151f04c..5e933f0 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt index 142fef4..669e969 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AttackItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AttackItem.kt index fb96a93..176ed50 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AttackItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/AttackItem.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SkillItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SkillItem.kt index d414275..7879b2e 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SkillItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/SkillItem.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/MasteryCircle.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/MasteryCircle.kt index 08e9db5..5277ac0 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/MasteryCircle.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/MasteryCircle.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt index 413cccc..93e6f4a 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/character/Stat.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetUioFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetUioFactory.kt index b0dc786..4520047 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetUioFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/factory/CharacterSheetUioFactory.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillDetail.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillDetail.kt index 748139d..aad1805 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillDetail.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillDetail.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SpellsViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SpellsViewModel.kt index 07fc4bc..8162cb9 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SpellsViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SpellsViewModel.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationDetail.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationDetail.kt index 31d6013..e30d9f7 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationDetail.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationDetail.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationPage.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationPage.kt index a963bc5..4ef8f33 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationPage.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/alteration/AlterationPage.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/proficiency/ProficiencyPage.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/proficiency/ProficiencyPage.kt index 897974c..44ae23c 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/proficiency/ProficiencyPage.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/proficiency/ProficiencyPage.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingItem.kt index c190872..d8db003 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingItem.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingScreen.kt index b40addd..b5aa102 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/landing/LandingScreen.kt @@ -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) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt index f44bec3..c243677 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconItem.kt index 46f0ec8..ca8ad7f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconItem.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconViewModel.kt index e360583..24ae781 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconViewModel.kt @@ -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 { diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/detail/LocationDetailScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/detail/LocationDetailScreen.kt index ebae578..3169950 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/detail/LocationDetailScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/detail/LocationDetailScreen.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationItem.kt index 5e421af..19b39c2 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationItem.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/detail/QuestDetailScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/detail/QuestDetailScreen.kt index 134ac20..eac6230 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/detail/QuestDetailScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/detail/QuestDetailScreen.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestItem.kt index 9f0cc55..40bcde7 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestItem.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/RollDice.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/RollDice.kt index f827ada..e57638b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/RollDice.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/RollDice.kt @@ -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, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/ThrowsCard.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/ThrowsCard.kt index 71fcd68..d2eb2cb 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/ThrowsCard.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/rolls/composable/ThrowsCard.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/search/SearchScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/search/SearchScreen.kt index 81b8dc9..5914e6a 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/search/SearchScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/search/SearchScreen.kt @@ -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"), diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailScreen.kt index 6f69235..4fc3589 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailScreen.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailViewModel.kt index c477719..2da3b54 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/spell/SpellDetailViewModel.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt index a53121f..4664327 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/AttributesSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/CharacteristicsSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/CharacteristicsSummary.kt index 779e99d..da58e0f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/CharacteristicsSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/CharacteristicsSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/PassivesSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/PassivesSummary.kt index 0392994..1c0253f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/PassivesSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/PassivesSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/ProficiencySummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/ProficiencySummary.kt index 9242b81..98d1b3f 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/ProficiencySummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/ProficiencySummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SavingThrowsSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SavingThrowsSummary.kt index e167589..192bf6e 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SavingThrowsSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SavingThrowsSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SpellSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SpellSummary.kt index 12754b8..3a92087 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SpellSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/SpellSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt index 2b18aec..f9250ea 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/StatusSummary.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt index f9cf715..ceed64d 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/common/SummaryRow.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberProficienciesSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberProficienciesSummary.kt index 1ccb8d3..2951686 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberProficienciesSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/composable/preview/statistic/rememberProficienciesSummary.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/StatisticSummary.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/StatisticSummary.kt index 937db21..b9575b9 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/StatisticSummary.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/StatisticSummary.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt index dda4d6e..20c0ef5 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/summary/pages/statistic/SummaryFactory.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+CriticalShader.kt b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+CriticalShader.kt new file mode 100644 index 0000000..7c04054 --- /dev/null +++ b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+CriticalShader.kt @@ -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 { + 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() \ No newline at end of file diff --git a/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierExt+dashedBorder.kt b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+DashedBorder.kt similarity index 99% rename from app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierExt+dashedBorder.kt rename to app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+DashedBorder.kt index c87d14b..88ff3eb 100644 --- a/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierExt+dashedBorder.kt +++ b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx+DashedBorder.kt @@ -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 diff --git a/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierEx.kt b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx.kt similarity index 98% rename from app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierEx.kt rename to app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx.kt index ebec8d6..24e2dfc 100644 --- a/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/ModifierEx.kt +++ b/app/src/main/java/com/pixelized/rplexicon/utilitary/extentions/modifier/ModifierEx.kt @@ -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, diff --git a/app/src/main/res/drawable/im_naderius.webp b/app/src/main/res/drawable/im_naderius.webp deleted file mode 100644 index bb1c93f..0000000 Binary files a/app/src/main/res/drawable/im_naderius.webp and /dev/null differ diff --git a/app/src/main/res/drawable/im_naderius_background.webp b/app/src/main/res/drawable/im_naderius_background.webp new file mode 100644 index 0000000..097c32c Binary files /dev/null and b/app/src/main/res/drawable/im_naderius_background.webp differ diff --git a/app/src/main/res/drawable/im_naderius_dice.webp b/app/src/main/res/drawable/im_naderius_dice.webp new file mode 100644 index 0000000..89f8065 Binary files /dev/null and b/app/src/main/res/drawable/im_naderius_dice.webp differ diff --git a/app/src/main/res/drawable/im_naderius_foreground.webp b/app/src/main/res/drawable/im_naderius_foreground.webp new file mode 100644 index 0000000..4c044b2 Binary files /dev/null and b/app/src/main/res/drawable/im_naderius_foreground.webp differ