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,
|
characterDiminishedViewModel = dismissedViewModel,
|
||||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||||
alterationViewModel = alterationViewModel,
|
alterationViewModel = alterationViewModel,
|
||||||
|
onLevelUp = {
|
||||||
|
screen.navigateToLevelScreen(characterSheetId = it)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
rightPanel = {
|
rightPanel = {
|
||||||
|
|
@ -144,7 +147,7 @@ fun CampaignScreen(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLevelUp = {
|
onLevelUp = {
|
||||||
|
screen.navigateToLevelScreen(characterSheetId = it)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
@ -160,6 +163,9 @@ fun CampaignScreen(
|
||||||
characterDiminishedViewModel = dismissedViewModel,
|
characterDiminishedViewModel = dismissedViewModel,
|
||||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||||
alterationViewModel = alterationViewModel,
|
alterationViewModel = alterationViewModel,
|
||||||
|
onLevelUp = {
|
||||||
|
screen.navigateToLevelScreen(characterSheetId = it)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ fun CharacterDetailPanel(
|
||||||
characteristicDialogViewModel: CharacterSheetCharacteristicDialogViewModel,
|
characteristicDialogViewModel: CharacterSheetCharacteristicDialogViewModel,
|
||||||
characterDiminishedViewModel: CharacterSheetDiminishedDialogViewModel,
|
characterDiminishedViewModel: CharacterSheetDiminishedDialogViewModel,
|
||||||
alterationViewModel: CharacterSheetAlterationDialogViewModel,
|
alterationViewModel: CharacterSheetAlterationDialogViewModel,
|
||||||
|
onLevelUp: (String) -> Unit,
|
||||||
) {
|
) {
|
||||||
val roll = LocalRollHostState.current
|
val roll = LocalRollHostState.current
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
|
|
@ -76,6 +77,7 @@ fun CharacterDetailPanel(
|
||||||
onDismissRequest = {
|
onDismissRequest = {
|
||||||
detailViewModel.hideCharacter()
|
detailViewModel.hideCharacter()
|
||||||
},
|
},
|
||||||
|
onLevelUp = onLevelUp,
|
||||||
onAlteration = {
|
onAlteration = {
|
||||||
blurController.show()
|
blurController.show()
|
||||||
alterationViewModel.show(characterSheetId = it)
|
alterationViewModel.show(characterSheetId = it)
|
||||||
|
|
@ -147,6 +149,7 @@ fun CharacterDetailAnimatedPanel(
|
||||||
detail: State<CharacterDetailPanelUio>,
|
detail: State<CharacterDetailPanelUio>,
|
||||||
transitionSpec: AnimatedContentTransitionScope<CharacterDetailPanelUio>.() -> ContentTransform,
|
transitionSpec: AnimatedContentTransitionScope<CharacterDetailPanelUio>.() -> ContentTransform,
|
||||||
onDismissRequest: (characterSheetId: String) -> Unit,
|
onDismissRequest: (characterSheetId: String) -> Unit,
|
||||||
|
onLevelUp: (characterSheetId: String) -> Unit,
|
||||||
onAlteration: (characterSheetId: String) -> Unit,
|
onAlteration: (characterSheetId: String) -> Unit,
|
||||||
onDiminished: (characterSheetId: String) -> Unit,
|
onDiminished: (characterSheetId: String) -> Unit,
|
||||||
onHp: (characterSheetId: String) -> Unit,
|
onHp: (characterSheetId: String) -> Unit,
|
||||||
|
|
@ -179,6 +182,7 @@ fun CharacterDetailAnimatedPanel(
|
||||||
header = it.header.collectAsState(),
|
header = it.header.collectAsState(),
|
||||||
sheet = it.sheet.collectAsState(),
|
sheet = it.sheet.collectAsState(),
|
||||||
onDismissRequest = { onDismissRequest(it.characterSheetId) },
|
onDismissRequest = { onDismissRequest(it.characterSheetId) },
|
||||||
|
onLevelUp = { onLevelUp(it.characterSheetId) },
|
||||||
onAlteration = { onAlteration(it.characterSheetId) },
|
onAlteration = { onAlteration(it.characterSheetId) },
|
||||||
onDiminished = { onDiminished(it.characterSheetId) },
|
onDiminished = { onDiminished(it.characterSheetId) },
|
||||||
onHp = { onHp(it.characterSheetId) },
|
onHp = { onHp(it.characterSheetId) },
|
||||||
|
|
@ -202,6 +206,7 @@ fun CharacterDetailContent(
|
||||||
shape: Shape = MaterialTheme.lwa.shapes.panel,
|
shape: Shape = MaterialTheme.lwa.shapes.panel,
|
||||||
header: State<CharacterDetailHeaderUio?>,
|
header: State<CharacterDetailHeaderUio?>,
|
||||||
sheet: State<CharacterDetailSheetUio?>,
|
sheet: State<CharacterDetailSheetUio?>,
|
||||||
|
onLevelUp: () -> Unit,
|
||||||
onAlteration: () -> Unit,
|
onAlteration: () -> Unit,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
onDiminished: () -> Unit,
|
onDiminished: () -> Unit,
|
||||||
|
|
@ -226,6 +231,7 @@ fun CharacterDetailContent(
|
||||||
.fillMaxWidth(),
|
.fillMaxWidth(),
|
||||||
header = header,
|
header = header,
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
|
onLevelUp = onLevelUp,
|
||||||
onAlteration = onAlteration,
|
onAlteration = onAlteration,
|
||||||
onDiminished = onDiminished,
|
onDiminished = onDiminished,
|
||||||
onHp = onHp,
|
onHp = onHp,
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ class CharacterDetailFactory(
|
||||||
portrait = alteredCharacterSheet.portrait,
|
portrait = alteredCharacterSheet.portrait,
|
||||||
diminished = alteredCharacterSheet.diminished,
|
diminished = alteredCharacterSheet.diminished,
|
||||||
alteration = settings.isAdmin ?: false,
|
alteration = settings.isAdmin ?: false,
|
||||||
|
levelUp = alteredCharacterSheet.shouldLevelUp,
|
||||||
name = alteredCharacterSheet.name,
|
name = alteredCharacterSheet.name,
|
||||||
level = alteredCharacterSheet.level,
|
level = alteredCharacterSheet.level,
|
||||||
hp = "${maxHp - alteredCharacterSheet.damage}",
|
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.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.pixelized.desktop.lwa.ui.composable.shapes.ArrowShape
|
||||||
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout
|
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipLayout
|
||||||
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio
|
import com.pixelized.desktop.lwa.ui.composable.tooltip.TooltipUio
|
||||||
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
|
import com.pixelized.desktop.lwa.ui.overlay.roll.RollAction
|
||||||
import com.pixelized.desktop.lwa.ui.theme.lwa
|
import com.pixelized.desktop.lwa.ui.theme.lwa
|
||||||
import lwacharactersheet.composeapp.generated.resources.Res
|
import lwacharactersheet.composeapp.generated.resources.Res
|
||||||
import lwacharactersheet.composeapp.generated.resources.character_sheet__level
|
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_close_24dp
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_cognition_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_24dp
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_heart_plus_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_shield_24dp
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_skull_24dp
|
import lwacharactersheet.composeapp.generated.resources.ic_skull_24dp
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_swords_24dp
|
import lwacharactersheet.composeapp.generated.resources.ic_swords_24dp
|
||||||
import lwacharactersheet.composeapp.generated.resources.ic_water_drop_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.painterResource
|
||||||
import org.jetbrains.compose.resources.stringResource
|
import org.jetbrains.compose.resources.stringResource
|
||||||
|
|
||||||
|
|
@ -61,6 +62,7 @@ data class CharacterDetailHeaderUio(
|
||||||
val portrait: String?,
|
val portrait: String?,
|
||||||
val diminished: Int,
|
val diminished: Int,
|
||||||
val alteration: Boolean,
|
val alteration: Boolean,
|
||||||
|
val levelUp: Boolean,
|
||||||
val name: String,
|
val name: String,
|
||||||
val level: Int,
|
val level: Int,
|
||||||
val hp: String,
|
val hp: String,
|
||||||
|
|
@ -93,6 +95,7 @@ fun CharacterDetailHeader(
|
||||||
iconSize: Dp = MaterialTheme.lwa.size.sheet.subCategory,
|
iconSize: Dp = MaterialTheme.lwa.size.sheet.subCategory,
|
||||||
header: State<CharacterDetailHeaderUio?>,
|
header: State<CharacterDetailHeaderUio?>,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
|
onLevelUp: () -> Unit,
|
||||||
onAlteration: () -> Unit,
|
onAlteration: () -> Unit,
|
||||||
onDiminished: () -> Unit,
|
onDiminished: () -> Unit,
|
||||||
onHp: () -> 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 {
|
Box {
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = onDiminished,
|
onClick = onDiminished,
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.navigation.NavHostController
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.LocalScreenController
|
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.GameMasterDestination
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterAlterationEditPage
|
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterAlterationEditPage
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterItemEditPage
|
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterItemEditPage
|
||||||
|
|
@ -38,6 +39,8 @@ fun GameMasterNavHost() {
|
||||||
composableGameMasterMainPage()
|
composableGameMasterMainPage()
|
||||||
composableGameMasterAlterationEditPage()
|
composableGameMasterAlterationEditPage()
|
||||||
composableGameMasterItemEditPage()
|
composableGameMasterItemEditPage()
|
||||||
|
|
||||||
|
composableLevelUp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import androidx.navigation.NavHostController
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.pixelized.desktop.lwa.BuildKonfig
|
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.GMActionDestination
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterActionPage
|
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterActionPage
|
||||||
import com.pixelized.desktop.lwa.ui.navigation.screen.destination.gamemaster.composableGameMasterAlterationEditPage
|
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.character.diminished.CharacterSheetDiminishedDialogViewModel
|
||||||
import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler
|
import com.pixelized.desktop.lwa.ui.composable.key.KeyHandler
|
||||||
import com.pixelized.desktop.lwa.ui.composable.textfield.LwaTextFieldUio
|
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.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.CharacterDetailPanel
|
||||||
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
|
import com.pixelized.desktop.lwa.ui.screen.campaign.player.detail.CharacterDetailViewModel
|
||||||
|
|
@ -66,6 +68,7 @@ fun GMCharacterPage(
|
||||||
alterationViewModel: CharacterSheetAlterationDialogViewModel = koinViewModel(),
|
alterationViewModel: CharacterSheetAlterationDialogViewModel = koinViewModel(),
|
||||||
) {
|
) {
|
||||||
val windows = LocalWindowController.current
|
val windows = LocalWindowController.current
|
||||||
|
val screens = LocalScreenController.current
|
||||||
val blurController = LocalBlurController.current
|
val blurController = LocalBlurController.current
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
|
|
||||||
|
|
@ -114,6 +117,9 @@ fun GMCharacterPage(
|
||||||
characterDiminishedViewModel = dismissedViewModel,
|
characterDiminishedViewModel = dismissedViewModel,
|
||||||
characteristicDialogViewModel = characteristicDialogViewModel,
|
characteristicDialogViewModel = characteristicDialogViewModel,
|
||||||
alterationViewModel = alterationViewModel,
|
alterationViewModel = alterationViewModel,
|
||||||
|
onLevelUp = {
|
||||||
|
screens.navigateToLevelScreen(characterSheetId = it)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
CharacterSheetCharacteristicDialog(
|
CharacterSheetCharacteristicDialog(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue