Add basic character sheet and roll feature.

Add RollOverlay feature.

Add character sheet

Add a basic character sheet and a way to throw dice.

Link the character sheet to the roll system.

change app icon.

Small fix.
This commit is contained in:
Thomas Andres Gomez 2023-09-07 10:15:42 +02:00
parent 42b26e2b9b
commit df7b43fd73
64 changed files with 3264 additions and 89 deletions

View file

@ -2,8 +2,8 @@ package com.pixelized.rplexicon
import android.app.Activity
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
@ -15,13 +15,19 @@ import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Surface
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.WindowCompat
import com.pixelized.rplexicon.facotry.RollParser
import androidx.hilt.navigation.compose.hiltViewModel
import com.pixelized.rplexicon.ui.composable.BlurredOverlayHost
import com.pixelized.rplexicon.ui.navigation.ScreenNavHost
import com.pixelized.rplexicon.ui.screens.rolls.BlurredRollOverlayHostState
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 dagger.hilt.android.AndroidEntryPoint
@ -31,6 +37,12 @@ val LocalActivity = staticCompositionLocalOf<Activity> {
val LocalSnack = staticCompositionLocalOf<SnackbarHostState> {
error("SnackbarHostState not available")
}
val RollSnack = staticCompositionLocalOf<SnackbarHostState> {
error("SnackbarHostState not available")
}
val LocalRollOverlay = compositionLocalOf<BlurredRollOverlayHostState> {
error("LocalRollOverlay not yet ready")
}
val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0)
@AndroidEntryPoint
@ -49,9 +61,15 @@ class MainActivity : ComponentActivity() {
setContent {
LexiconTheme {
val rollViewModel = hiltViewModel<RollOverlayViewModel>()
val overlay = rememberBlurredRollOverlayHostState(
viewModel = rollViewModel,
)
CompositionLocalProvider(
LocalActivity provides this,
LocalSnack provides remember { SnackbarHostState() }
LocalSnack provides remember { SnackbarHostState() },
LocalRollOverlay provides overlay,
) {
Scaffold(
contentWindowInsets = NO_WINDOW_INSETS,
@ -62,7 +80,17 @@ class MainActivity : ComponentActivity() {
.padding(paddingValues = padding),
color = MaterialTheme.colorScheme.background
) {
ScreenNavHost()
BlurredOverlayHost(
rollOverlayState = overlay,
overlay = {
RollOverlay(
viewModel = rollViewModel,
)
},
content = {
ScreenNavHost()
},
)
}
},
snackbarHost = {
@ -72,6 +100,9 @@ class MainActivity : ComponentActivity() {
)
}
)
BackHandler(enabled = overlay.isOverlayVisible) {
overlay.hideOverlay()
}
}
}
}