Add collection info to skill page

This commit is contained in:
nea
2023-06-11 02:43:14 +02:00
parent 040f7c7275
commit a36c8f1c0e
12 changed files with 211 additions and 41 deletions

View File

@@ -19,6 +19,32 @@ import moe.nea.firmament.util.json.DashlessUUIDSerializer
import moe.nea.firmament.util.json.InstantAsLongSerializer
@Serializable
data class CollectionSkillData(
val items: Map<CollectionType, CollectionInfo>
)
@Serializable
data class CollectionResponse(
val success: Boolean,
val collections: Map<Skill, CollectionSkillData>
)
@Serializable
data class CollectionInfo(
val name: String,
val maxTiers: Int,
val tiers: List<CollectionTier>
)
@Serializable
data class CollectionTier(
val tier: Int,
val amountRequired: Long,
val unlocks: List<String>,
)
@Serializable
data class Profiles(
val success: Boolean,
@@ -35,18 +61,18 @@ data class Profile(
val members: Map<UUID, Member>,
)
enum class Skill(val accessor: KProperty1<Member, Double>, val color: DyeColor) {
FARMING(Member::experienceSkillFarming, DyeColor.YELLOW),
FORAGING(Member::experienceSkillForaging, DyeColor.BROWN),
MINING(Member::experienceSkillMining, DyeColor.LIGHT_GRAY),
ALCHEMY(Member::experienceSkillAlchemy, DyeColor.PURPLE),
TAMING(Member::experienceSkillTaming, DyeColor.GREEN),
FISHING(Member::experienceSkillFishing, DyeColor.BLUE),
RUNECRAFTING(Member::experienceSkillRunecrafting, DyeColor.PINK),
CARPENTRY(Member::experienceSkillCarpentry, DyeColor.ORANGE),
COMBAT(Member::experienceSkillCombat, DyeColor.RED),
SOCIAL(Member::experienceSkillSocial, DyeColor.WHITE),
ENCHANTING(Member::experienceSkillEnchanting, DyeColor.MAGENTA),
enum class Skill(val accessor: KProperty1<Member, Double>, val color: DyeColor, val icon: SkyblockId) {
FARMING(Member::experienceSkillFarming, DyeColor.YELLOW, SkyblockId("ROOKIE_HOE")),
FORAGING(Member::experienceSkillForaging, DyeColor.BROWN, SkyblockId("TREECAPITATOR_AXE")),
MINING(Member::experienceSkillMining, DyeColor.LIGHT_GRAY, SkyblockId("DIAMOND_PICKAXE")),
ALCHEMY(Member::experienceSkillAlchemy, DyeColor.PURPLE, SkyblockId("BREWING_STAND")),
TAMING(Member::experienceSkillTaming, DyeColor.GREEN, SkyblockId("SUPER_EGG")),
FISHING(Member::experienceSkillFishing, DyeColor.BLUE, SkyblockId("FARMER_ROD")),
RUNECRAFTING(Member::experienceSkillRunecrafting, DyeColor.PINK, SkyblockId("MUSIC_RUNE;1")),
CARPENTRY(Member::experienceSkillCarpentry, DyeColor.ORANGE, SkyblockId("WORKBENCH")),
COMBAT(Member::experienceSkillCombat, DyeColor.RED, SkyblockId("UNDEAD_SWORD")),
SOCIAL(Member::experienceSkillSocial, DyeColor.WHITE, SkyblockId("EGG_HUNT")),
ENCHANTING(Member::experienceSkillEnchanting, DyeColor.MAGENTA, SkyblockId("ENCHANTMENT_TABLE")),
;
fun getMaximumLevel(leveling: Leveling) = leveling.maximumLevels[name.lowercase()] ?: TODO("Repo error")
@@ -58,6 +84,12 @@ enum class Skill(val accessor: KProperty1<Member, Double>, val color: DyeColor)
}
}
@Serializable
@JvmInline
value class CollectionType(val string: String) {
val skyblockId get() = SkyblockId(string.replace(":", "-").replace("MUSHROOM_COLLECTION", "HUGE_MUSHROOM_2"))
}
@Serializable
data class Member(
val pets: List<Pet> = listOf(),
@@ -85,6 +117,7 @@ data class Member(
val experienceSkillRunecrafting: Double = 0.0,
@SerialName("experience_skill_carpentry")
val experienceSkillCarpentry: Double = 0.0,
val collection: Map<CollectionType, Long> = mapOf()
)
@Serializable