diff --git a/app/src/main/java/io/github/garemat/lunachron/CharacterState.kt b/app/src/main/java/io/github/garemat/lunachron/CharacterState.kt index cb33171..154a8a7 100644 --- a/app/src/main/java/io/github/garemat/lunachron/CharacterState.kt +++ b/app/src/main/java/io/github/garemat/lunachron/CharacterState.kt @@ -211,6 +211,9 @@ data class OnlineMachinationAttack( data class OnlineMachinationEntry( val deviceId: String, val username: String, + // Only sent (as >0) for hosts, whose previousRoundMachinations spans every + // past round rather than just the previous one. Defaults to 0 for member + // responses, which the server already scopes to a single round. val roundNumber: Int = 0, val choices: List = emptyList(), val attack: OnlineMachinationAttack? = null diff --git a/app/src/main/java/io/github/garemat/lunachron/ui/OnlineCampaignDetailScreen.kt b/app/src/main/java/io/github/garemat/lunachron/ui/OnlineCampaignDetailScreen.kt index 7a91968..3ac46d1 100644 --- a/app/src/main/java/io/github/garemat/lunachron/ui/OnlineCampaignDetailScreen.kt +++ b/app/src/main/java/io/github/garemat/lunachron/ui/OnlineCampaignDetailScreen.kt @@ -1281,10 +1281,13 @@ private fun PreviousRoundMachinationsSection( val drawCount: Int ) - val results = remember(machinations, members) { + val results = remember(machinations, members, previousRound) { val supportersOf = mutableMapOf>() val sabotageCountOf = mutableMapOf() + // Hosts receive every past round's submissions (tagged with roundNumber > 0); + // members receive only the previous round, where roundNumber defaults to 0. for (entry in machinations) { + if (entry.roundNumber > 0 && entry.roundNumber != previousRound) continue for (choice in entry.choices) { if (choice.type == "SUPPORT") { supportersOf.getOrPut(choice.targetDeviceId) { mutableListOf() }.add(entry.username)