From 8dc5bbbdde77925f86cf3a09abafeaf63968f2dd Mon Sep 17 00:00:00 2001 From: Nacho Date: Fri, 5 Sep 2025 02:19:09 +0200 Subject: [PATCH] Small fix related to special missions - Now you can clear failed special missions. When a special mission fails, you will not get an item after clearing it. - Huge note: I have not tested this fix, but it should work... At least that's what my intuition is telling me! Jokes aside, this should work, but the home screen will not update. I should update this to make use of StateFlows and Flows to keep the home screen updated at all times. --- .../vbhelper/components/CharacterEntry.kt | 2 +- .../homeScreens/HomeScreenController.kt | 3 +- .../homeScreens/HomeScreenControllerImpl.kt | 46 +++++++++++-------- .../homeScreens/screens/VBDiMHomeScreen.kt | 4 +- 4 files changed, 31 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt b/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt index 16ae708..a6ffa91 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt @@ -169,7 +169,7 @@ fun SpecialMissionsEntry( Card( modifier = modifier, shape = androidx.compose.material.MaterialTheme.shapes.small, - onClick = if (specialMission.status == SpecialMission.Status.COMPLETED) { + onClick = if (specialMission.status == SpecialMission.Status.COMPLETED || specialMission.status == SpecialMission.Status.FAILED) { onClickCard } else { { } diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenController.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenController.kt index 52572ce..b24f8b2 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenController.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenController.kt @@ -1,8 +1,9 @@ package com.github.nacabaro.vbhelper.screens.homeScreens +import com.github.cfogrady.vbnfc.vb.SpecialMission import com.github.nacabaro.vbhelper.dtos.ItemDtos interface HomeScreenController { fun didAdventureMissionsFinish(onCompletion: (Boolean) -> Unit) - fun clearSpecialMission(missionId: Long, onCleared: (ItemDtos.PurchasedItem) -> Unit) + fun clearSpecialMission(missionId: Long, missionCompletion: SpecialMission.Status, onCleared: (ItemDtos.PurchasedItem?) -> Unit) } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt index 89fbdd0..5169263 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/HomeScreenControllerImpl.kt @@ -2,6 +2,7 @@ package com.github.nacabaro.vbhelper.screens.homeScreens import androidx.activity.ComponentActivity import androidx.lifecycle.lifecycleScope +import com.github.cfogrady.vbnfc.vb.SpecialMission import com.github.nacabaro.vbhelper.di.VBHelper import com.github.nacabaro.vbhelper.dtos.ItemDtos import kotlinx.coroutines.launch @@ -30,37 +31,42 @@ class HomeScreenControllerImpl( } } - override fun clearSpecialMission(missionId: Long, onCleared: (ItemDtos.PurchasedItem) -> Unit) { + override fun clearSpecialMission(missionId: Long, missionCompletion: SpecialMission.Status, onCleared: (ItemDtos.PurchasedItem?) -> Unit) { componentActivity.lifecycleScope.launch { database .specialMissionDao() .clearSpecialMission(missionId) - val randomItem = database - .itemDao() - .getAllItems() - .random() + if (missionCompletion == SpecialMission.Status.COMPLETED) { + val randomItem = database + .itemDao() + .getAllItems() + .random() - val randomItemAmount = (Random.nextFloat() * 5).roundToInt() + val randomItemAmount = (Random.nextFloat() * 5).roundToInt() - database - .itemDao() - .purchaseItem( + database + .itemDao() + .purchaseItem( + itemId = randomItem.id, + itemAmount = randomItemAmount + ) + + val purchasedItem = ItemDtos.PurchasedItem( itemId = randomItem.id, - itemAmount = randomItemAmount + itemName = randomItem.name, + itemDescription = randomItem.description, + itemIcon = randomItem.itemIcon, + itemLength = randomItem.itemLength, + itemAmount = randomItemAmount, + itemType = randomItem.itemType ) - val purchasedItem = ItemDtos.PurchasedItem( - itemId = randomItem.id, - itemName = randomItem.name, - itemDescription = randomItem.description, - itemIcon = randomItem.itemIcon, - itemLength = randomItem.itemLength, - itemAmount = randomItemAmount, - itemType = randomItem.itemType - ) + onCleared(purchasedItem) + } else { + onCleared(null) + } - onCleared(purchasedItem) } } } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt index 22e67b8..74dd98d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/homeScreens/screens/VBDiMHomeScreen.kt @@ -34,7 +34,7 @@ fun VBDiMHomeScreen( homeScreenController: HomeScreenControllerImpl, transformationHistory: List, contentPadding: PaddingValues, - onClickCollect: (ItemDtos.PurchasedItem) -> Unit + onClickCollect: (ItemDtos.PurchasedItem?) -> Unit ) { Column( modifier = Modifier @@ -181,7 +181,7 @@ fun VBDiMHomeScreen( .padding(8.dp), ) { homeScreenController - .clearSpecialMission(mission.id, onClickCollect) + .clearSpecialMission(mission.id, mission.status, onClickCollect) } } }