From 43ea748e513e69ddabf2cebad544ab828e6906e5 Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Mon, 30 Oct 2023 13:30:47 +0100 Subject: [PATCH] Add description for object actions. --- .../character/composable/actions/ObjectItem.kt | 8 ++++---- .../character/pages/actions/ActionsPage.kt | 16 ++++++++-------- .../character/pages/actions/ObjectsViewModel.kt | 7 +++++++ .../character/pages/actions/SkillsViewModel.kt | 6 +++--- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt index d8fcf18..8e6de8b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/composable/actions/ObjectItem.kt @@ -41,12 +41,12 @@ fun ObjectItem( modifier: Modifier = Modifier, padding: PaddingValues = PaddingValues(top = 4.dp, bottom = 4.dp, start = 16.dp, end = 16.dp), item: ObjectItemUio, - onObject: (String) -> Unit, - onUse: (String) -> Unit, + onObject: (ObjectItemUio) -> Unit, + onUse: (ObjectItemUio) -> Unit, ) { Row( modifier = Modifier - .clickable { onObject(item.name) } + .clickable { onObject(item) } .padding(paddingValues = padding) .then(other = modifier), horizontalArrangement = Arrangement.spacedBy(space = 12.dp), @@ -85,7 +85,7 @@ fun ObjectItem( width = 1.dp, color = MaterialTheme.colorScheme.primary, ), - onClick = { onUse(item.name) }, + onClick = { onUse(item) }, ) { Text( text = stringResource(id = R.string.character_sheet_action_spell_cast), diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ActionsPage.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ActionsPage.kt index a5542bf..43952b6 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ActionsPage.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ActionsPage.kt @@ -77,12 +77,12 @@ fun ActionPage( overlay.showOverlay() } }, - onObject = { id -> - + onObject = { + skillViewModel.showSkillDetailDialog(item = it.name) }, - onUseObject = { id -> - objectsViewModel.onUse(id)?.let { - overlay.prepareRoll(diceThrow = it) + onUseObject = { + objectsViewModel.onUse(it.name)?.let { throws -> + overlay.prepareRoll(diceThrow = throws) overlay.showOverlay() } }, @@ -94,7 +94,7 @@ fun ActionPage( overlay.showOverlay() }, onSkillInfo = { - skillViewModel.showSkillDetailDialog(item = it) + skillViewModel.showSkillDetailDialog(item = it.label) }, onSpellLevel = { level: Int, value: Int, max: Int -> spellsViewModel.showSpellEditDialog(level = level, value = value, max = max) @@ -153,8 +153,8 @@ fun ActionsPageContent( spells: State>>>, onAttackHit: (id: String) -> Unit, onAttackDamage: (id: String) -> Unit, - onObject: (id: String) -> Unit, - onUseObject: (id: String) -> Unit, + onObject: (ObjectItemUio) -> Unit, + onUseObject: (ObjectItemUio) -> Unit, onSkillThrow: (SkillItemUio) -> Unit, onSkillCount: (SkillItemUio) -> Unit, onSkillInfo: (SkillItemUio) -> Unit, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt index e5ec6a2..f8475a0 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/ObjectsViewModel.kt @@ -27,6 +27,9 @@ class ObjectsViewModel @Inject constructor( private val _objects = mutableStateOf>(emptyList()) val objects: State> get() = _objects + private val _dialog = mutableStateOf(null) + val dialog: State get() = _dialog + init { viewModelScope.launch(Dispatchers.IO) { objectsRepository.data.collect { objects -> @@ -44,6 +47,10 @@ class ObjectsViewModel @Inject constructor( } } + fun onDetail(name: String) { + + } + fun onUse(name: String): DiceThrow? { val item = objectsRepository.find(character = character, item = name) return item?.let { diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillsViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillsViewModel.kt index 4fe4e21..132c502 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillsViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/pages/actions/SkillsViewModel.kt @@ -104,12 +104,12 @@ class SkillsViewModel @Inject constructor( skill = name, ) - fun showSkillDetailDialog(item: SkillItemUio) { + fun showSkillDetailDialog(item: String) { _skillDetailDialog.value = descriptionRepository - .find(name = item.label) + .find(name = item) ?.let { description -> SkillDetailUio( - name = item.label, + name = item, original = description.original, description = description.description )