Fix profile viewer not counting coop contributions to collections

This commit is contained in:
nea
2023-08-27 17:32:50 +02:00
parent 1fed1e52b4
commit 8bdffa5537

View File

@@ -6,29 +6,13 @@
package moe.nea.firmament.gui.profileviewer package moe.nea.firmament.gui.profileviewer
import io.github.cottonmc.cotton.gui.widget.TooltipBuilder import io.github.cottonmc.cotton.gui.widget.*
import io.github.cottonmc.cotton.gui.widget.WBox
import io.github.cottonmc.cotton.gui.widget.WGridPanel
import io.github.cottonmc.cotton.gui.widget.WPanel
import io.github.cottonmc.cotton.gui.widget.WTabPanel
import io.github.cottonmc.cotton.gui.widget.WText
import io.github.cottonmc.cotton.gui.widget.WWidget
import io.github.cottonmc.cotton.gui.widget.data.Axis import io.github.cottonmc.cotton.gui.widget.data.Axis
import io.github.cottonmc.cotton.gui.widget.data.HorizontalAlignment import io.github.cottonmc.cotton.gui.widget.data.HorizontalAlignment
import io.github.cottonmc.cotton.gui.widget.data.Insets import io.github.cottonmc.cotton.gui.widget.data.Insets
import io.github.cottonmc.cotton.gui.widget.icon.Icon import io.github.cottonmc.cotton.gui.widget.icon.Icon
import io.github.cottonmc.cotton.gui.widget.icon.ItemIcon import io.github.cottonmc.cotton.gui.widget.icon.ItemIcon
import net.minecraft.item.ItemStack import moe.nea.firmament.apis.*
import net.minecraft.item.Items
import net.minecraft.text.Style
import net.minecraft.text.Text
import net.minecraft.util.DyeColor
import net.minecraft.util.Formatting
import moe.nea.firmament.apis.CollectionCategory
import moe.nea.firmament.apis.CollectionInfo
import moe.nea.firmament.apis.CollectionType
import moe.nea.firmament.apis.Member
import moe.nea.firmament.apis.Skill
import moe.nea.firmament.gui.WBar import moe.nea.firmament.gui.WBar
import moe.nea.firmament.gui.WFixedPanel import moe.nea.firmament.gui.WFixedPanel
import moe.nea.firmament.gui.WTitledItem import moe.nea.firmament.gui.WTitledItem
@@ -42,6 +26,12 @@ import moe.nea.firmament.util.FirmFormatters
import moe.nea.firmament.util.modifyLore import moe.nea.firmament.util.modifyLore
import moe.nea.firmament.util.toShedaniel import moe.nea.firmament.util.toShedaniel
import moe.nea.firmament.util.toTextColor import moe.nea.firmament.util.toTextColor
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.text.Style
import net.minecraft.text.Text
import net.minecraft.util.DyeColor
import net.minecraft.util.Formatting
object SkillPage : ProfilePage { object SkillPage : ProfilePage {
@@ -64,8 +54,8 @@ object SkillPage : ProfilePage {
} }
} }
private fun collectionItem(type: CollectionType, info: CollectionInfo, color: DyeColor, member: Member): WWidget { private fun collectionItem(type: CollectionType, info: CollectionInfo, color: DyeColor, profile: Profile): WWidget {
val collectionCount = member.collection[type] ?: 0 val collectionCount = profile.members.values.sumOf { it.collection[type] ?: 0 }
val unlockedTiers = info.tiers.count { it.amountRequired <= collectionCount } val unlockedTiers = info.tiers.count { it.amountRequired <= collectionCount }
return WTitledItem( return WTitledItem(
SBItemEntryDefinition.getEntry(type.skyblockId).asItemEntry().value.copy() SBItemEntryDefinition.getEntry(type.skyblockId).asItemEntry().value.copy()
@@ -79,7 +69,7 @@ object SkillPage : ProfilePage {
it.modifyLore { old -> it.modifyLore { old ->
listOf( listOf(
Text.literal("${info.name} Collection: $collectionCount / ${info.tiers.last().amountRequired}"), Text.literal("${info.name} Collection: $collectionCount / ${info.tiers.last().amountRequired}"),
Text.literal("Tiers unlocked: $unlockedTiers") Text.literal("Tiers unlocked: $unlockedTiers / ${info.tiers.size}")
).map { ).map {
it.fillStyle( it.fillStyle(
Style.EMPTY.withItalic(false).withColor(Formatting.GRAY) Style.EMPTY.withItalic(false).withColor(Formatting.GRAY)
@@ -110,7 +100,7 @@ object SkillPage : ProfilePage {
var x = 0 var x = 0
var y = 0 var y = 0
for (item in collections.items) { for (item in collections.items) {
it.add(collectionItem(item.key, item.value, color, profileViewer.member), x, y, 1, 1) it.add(collectionItem(item.key, item.value, color, profileViewer.profile), x, y, 1, 1)
x++ x++
if (x == 5) { if (x == 5) {
x = 0 x = 0