mirror of
https://github.com/nacabaro/vbhelper.git
synced 2026-07-30 00:31:54 +00:00
Fix special missions crash and NaN% stat display
- Fix crash when tapping a completed special mission: onClickCollect was ignoring the missionId passed by SpecialMissionsEntry and using selectedSpecialMissionId (-1 by default), causing Room to query id=-1 on a non-nullable Flow which throws when no row exists. - Fix NaN% in current phase win rate: the guard was checking totalBattlesLost==0 but dividing by currentPhaseBattles, producing 0/0=NaN when total>0 but current phase has no battles yet. - Guard against empty items list in clearSpecialMission to avoid NoSuchElementException from random() on an empty collection.
This commit is contained in:
parent
81bfec5ac5
commit
2e72b543f6
@ -45,11 +45,12 @@ class HomeScreenControllerImpl(
|
|||||||
.clearSpecialMission(missionId)
|
.clearSpecialMission(missionId)
|
||||||
|
|
||||||
if (missionStatus.status == SpecialMission.Status.COMPLETED) {
|
if (missionStatus.status == SpecialMission.Status.COMPLETED) {
|
||||||
val randomItem = database
|
val allItems = database.itemDao().getAllItems().first()
|
||||||
.itemDao()
|
if (allItems.isEmpty()) {
|
||||||
.getAllItems()
|
onCleared(null, null)
|
||||||
.first()
|
return@launch
|
||||||
.random()
|
}
|
||||||
|
val randomItem = allItems.random()
|
||||||
|
|
||||||
val randomItemAmount = (Random.nextFloat() * 5).roundToInt()
|
val randomItemAmount = (Random.nextFloat() * 5).roundToInt()
|
||||||
|
|
||||||
|
|||||||
@ -142,7 +142,7 @@ fun VBDiMHomeScreen(
|
|||||||
ItemDisplay(
|
ItemDisplay(
|
||||||
icon = R.drawable.baseline_swords_24,
|
icon = R.drawable.baseline_swords_24,
|
||||||
textValue = when {
|
textValue = when {
|
||||||
activeMon.totalBattlesLost == 0 -> "0.00 %"
|
activeMon.currentPhaseBattlesWon + activeMon.currentPhaseBattlesLost == 0 -> "0.00 %"
|
||||||
else -> {
|
else -> {
|
||||||
val battleWinPercentage =
|
val battleWinPercentage =
|
||||||
activeMon.currentPhaseBattlesWon.toFloat() / (activeMon.currentPhaseBattlesWon + activeMon.currentPhaseBattlesLost).toFloat()
|
activeMon.currentPhaseBattlesWon.toFloat() / (activeMon.currentPhaseBattlesWon + activeMon.currentPhaseBattlesLost).toFloat()
|
||||||
@ -150,7 +150,7 @@ fun VBDiMHomeScreen(
|
|||||||
Locale.getDefault(),
|
Locale.getDefault(),
|
||||||
"%.2f",
|
"%.2f",
|
||||||
battleWinPercentage * 100
|
battleWinPercentage * 100
|
||||||
) + " %" // Specify locale
|
) + " %"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
definition = stringResource(R.string.home_vbdim_current_phase_win),
|
definition = stringResource(R.string.home_vbdim_current_phase_win),
|
||||||
@ -193,9 +193,9 @@ fun VBDiMHomeScreen(
|
|||||||
onClickMission = { missionId ->
|
onClickMission = { missionId ->
|
||||||
selectedSpecialMissionId = missionId
|
selectedSpecialMissionId = missionId
|
||||||
},
|
},
|
||||||
onClickCollect = {
|
onClickCollect = { missionId ->
|
||||||
homeScreenController
|
homeScreenController
|
||||||
.clearSpecialMission(selectedSpecialMissionId, onClickCollect)
|
.clearSpecialMission(missionId, onClickCollect)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user