Add LevelUp feature for the NPC and to the GM screens.
This commit is contained in:
parent
a55753494f
commit
9588a3bfaf
7 changed files with 44 additions and 5 deletions
|
|
@ -133,6 +133,9 @@ fun CampaignScreen(
|
|||
characterDiminishedViewModel = dismissedViewModel,
|
||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||
alterationViewModel = alterationViewModel,
|
||||
onLevelUp = {
|
||||
screen.navigateToLevelScreen(characterSheetId = it)
|
||||
}
|
||||
)
|
||||
},
|
||||
rightPanel = {
|
||||
|
|
@ -144,7 +147,7 @@ fun CampaignScreen(
|
|||
}
|
||||
},
|
||||
onLevelUp = {
|
||||
|
||||
screen.navigateToLevelScreen(characterSheetId = it)
|
||||
}
|
||||
)
|
||||
},
|
||||
|
|
@ -160,6 +163,9 @@ fun CampaignScreen(
|
|||
characterDiminishedViewModel = dismissedViewModel,
|
||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||
alterationViewModel = alterationViewModel,
|
||||
onLevelUp = {
|
||||
screen.navigateToLevelScreen(characterSheetId = it)
|
||||
}
|
||||
)
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ fun CharacterDetailPanel(
|
|||
characteristicDialogViewModel: CharacterSheetCharacteristicDialogViewModel,
|
||||
characterDiminishedViewModel: CharacterSheetDiminishedDialogViewModel,
|
||||
alterationViewModel: CharacterSheetAlterationDialogViewModel,
|
||||
onLevelUp: (String) -> Unit,
|
||||
) {
|
||||
val roll = LocalRollHostState.current
|
||||
val scope = rememberCoroutineScope()
|
||||
|
|
@ -76,6 +77,7 @@ fun CharacterDetailPanel(
|
|||
onDismissRequest = {
|
||||
detailViewModel.hideCharacter()
|
||||
},
|
||||
onLevelUp = onLevelUp,
|
||||
onAlteration = {
|
||||
blurController.show()
|
||||
alterationViewModel.show(characterSheetId = it)
|
||||
|
|
@ -147,6 +149,7 @@ fun CharacterDetailAnimatedPanel(
|
|||
detail: State<CharacterDetailPanelUio>,
|
||||
transitionSpec: AnimatedContentTransitionScope<CharacterDetailPanelUio>.() -> ContentTransform,
|
||||
onDismissRequest: (characterSheetId: String) -> Unit,
|
||||
onLevelUp: (characterSheetId: String) -> Unit,
|
||||
onAlteration: (characterSheetId: String) -> Unit,
|
||||
onDiminished: (characterSheetId: String) -> Unit,
|
||||
onHp: (characterSheetId: String) -> Unit,
|
||||
|
|
@ -179,6 +182,7 @@ fun CharacterDetailAnimatedPanel(
|
|||
header = it.header.collectAsState(),
|
||||
sheet = it.sheet.collectAsState(),
|
||||
onDismissRequest = { onDismissRequest(it.characterSheetId) },
|
||||
onLevelUp = { onLevelUp(it.characterSheetId) },
|
||||
onAlteration = { onAlteration(it.characterSheetId) },
|
||||
onDiminished = { onDiminished(it.characterSheetId) },
|
||||
onHp = { onHp(it.characterSheetId) },
|
||||
|
|
@ -202,6 +206,7 @@ fun CharacterDetailContent(
|
|||
shape: Shape = MaterialTheme.lwa.shapes.panel,
|
||||
header: State<CharacterDetailHeaderUio?>,
|
||||
sheet: State<CharacterDetailSheetUio?>,
|
||||
onLevelUp: () -> Unit,
|
||||
onAlteration: () -> Unit,
|
||||
onDismissRequest: () -> Unit,
|
||||
onDiminished: () -> Unit,
|
||||
|
|
@ -226,6 +231,7 @@ fun CharacterDetailContent(
|
|||
.fillMaxWidth(),
|
||||
header = header,
|
||||
onDismissRequest = onDismissRequest,
|
||||
onLevelUp = onLevelUp,
|
||||
onAlteration = onAlteration,
|
||||
onDiminished = onDiminished,
|
||||
onHp = onHp,
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ class CharacterDetailFactory(
|
|||
portrait = alteredCharacterSheet.portrait,
|
||||
diminished = alteredCharacterSheet.diminished,
|
||||
alteration = settings.isAdmin ?: false,
|
||||
levelUp = alteredCharacterSheet.shouldLevelUp,
|
||||
name = alteredCharacterSheet.name,
|
||||
level = alteredCharacterSheet.level,
|
||||
hp = "${maxHp - alteredCharacterSheet.damage}",
|
||||
|
|
|
|||
|
|
@ -34,24 +34,25 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.pixelized.desktop.lwa.ui.composable.shapes.ArrowShape
|
||||
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout
|
||||
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio
|
||||
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
|
||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||
import lwacharactersheet.composeapp.generated.resources.Res
|
||||
import lwacharactersheet.composeapp.generated.resources.character_sheet__level
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_azm_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_blur_on_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_close_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_cognition_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_directions_run_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_heart_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_heart_plus_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_pan_tool_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_shield_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_skull_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_swords_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_water_drop_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_pan_tool_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_azm_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_blur_on_24dp
|
||||
import lwacharactersheet.composeapp.generated.resources.ic_directions_run_24dp
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
|
|
@ -61,6 +62,7 @@ data class CharacterDetailHeaderUio(
|
|||
val portrait: String?,
|
||||
val diminished: Int,
|
||||
val alteration: Boolean,
|
||||
val levelUp: Boolean,
|
||||
val name: String,
|
||||
val level: Int,
|
||||
val hp: String,
|
||||
|
|
@ -93,6 +95,7 @@ fun CharacterDetailHeader(
|
|||
iconSize: Dp = MaterialTheme.lwa.size.sheet.subCategory,
|
||||
header: State<CharacterDetailHeaderUio?>,
|
||||
onDismissRequest: () -> Unit,
|
||||
onLevelUp: () -> Unit,
|
||||
onAlteration: () -> Unit,
|
||||
onDiminished: () -> Unit,
|
||||
onHp: () -> Unit,
|
||||
|
|
@ -143,6 +146,19 @@ fun CharacterDetailHeader(
|
|||
)
|
||||
}
|
||||
}
|
||||
AnimatedVisibility(
|
||||
visible = header.value?.levelUp == true,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
) {
|
||||
IconButton(
|
||||
onClick = onLevelUp,
|
||||
) {
|
||||
ArrowShape(
|
||||
color = MaterialTheme.lwa.colorScheme.portrait.levelUp,
|
||||
)
|
||||
}
|
||||
}
|
||||
Box {
|
||||
IconButton(
|
||||
onClick = onDiminished,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import androidx.navigation.NavHostController
|
|||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableLevelUp
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.GameMasterDestination
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterAlterationEditPage
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterItemEditPage
|
||||
|
|
@ -38,6 +39,8 @@ fun GameMasterNavHost() {
|
|||
composableGameMasterMainPage()
|
||||
composableGameMasterAlterationEditPage()
|
||||
composableGameMasterItemEditPage()
|
||||
|
||||
composableLevelUp()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import androidx.navigation.NavHostController
|
|||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.pixelized.desktop.lwa.BuildKonfig
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.composableLevelUp
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.GMActionDestination
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterActionPage
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterAlterationEditPage
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterShe
|
|||
import com.pixelized.desktop.lwa.ui.composable.character.diminished.CharacterSheetDiminishedDialogViewModel
|
||||
import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler
|
||||
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.navigateToLevelScreen
|
||||
import com.pixelized.desktop.lwa.ui.navigation.window.destination.navigateToCharacterSheetEdit
|
||||
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailPanel
|
||||
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
|
||||
|
|
@ -66,6 +68,7 @@ fun GMCharacterPage(
|
|||
alterationViewModel: CharacterSheetAlterationDialogViewModel = koinViewModel(),
|
||||
) {
|
||||
val windows = LocalWindowController.current
|
||||
val screens = LocalScreenController.current
|
||||
val blurController = LocalBlurController.current
|
||||
val scope = rememberCoroutineScope()
|
||||
|
||||
|
|
@ -114,6 +117,9 @@ fun GMCharacterPage(
|
|||
characterDiminishedViewModel = dismissedViewModel,
|
||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||
alterationViewModel = alterationViewModel,
|
||||
onLevelUp = {
|
||||
screens.navigateToLevelScreen(characterSheetId = it)
|
||||
},
|
||||
)
|
||||
|
||||
CharacterSheetCharacteristicDialog(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue