diff options
| author | jani270 <69345714+jani270@users.noreply.github.com> | 2024-08-13 23:01:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-13 23:01:32 +0200 |
| commit | c8e10f2daebc745509757ee0e25ca3354417cd0f (patch) | |
| tree | 9b74a08d6e347d8b3f3a9e0e809d995ccf8ce98d | |
| parent | 30479790c8f47eb59bc0157cecf3bf4fb8ad5963 (diff) | |
| download | notenoughupdates-c8e10f2daebc745509757ee0e25ca3354417cd0f.tar.gz notenoughupdates-c8e10f2daebc745509757ee0e25ca3354417cd0f.tar.bz2 notenoughupdates-c8e10f2daebc745509757ee0e25ca3354417cd0f.zip | |
meta: Add better pv garden tooltips (#1315)
Co-authored-by: nopo <nopotheemail@gmail.com>
| -rw-r--r-- | src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/profileviewer/GardenPage.kt | 115 | ||||
| -rw-r--r-- | src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.png | bin | 5505 -> 5265 bytes |
2 files changed, 93 insertions, 22 deletions
diff --git a/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/profileviewer/GardenPage.kt b/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/profileviewer/GardenPage.kt index 82ef8d83..ce436287 100644 --- a/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/profileviewer/GardenPage.kt +++ b/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/profileviewer/GardenPage.kt @@ -278,14 +278,23 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance if (mouseX >= xPos + 20 && mouseX <= xPos + 70 && mouseY >= yPos && mouseY <= yPos + 20) { val tooltip = ArrayList<String>() + tooltip.add("§a${crop.displayName}") + tooltip.add("") + if (repoData.cropUpgrades.size == upgradeLevel) { + tooltip.add("§7Current Tier: §a$upgradeLevel§7/§a${repoData.cropUpgrades.size}") + } else { + tooltip.add("§7Current Tier: §e$upgradeLevel§7/§a${repoData.cropUpgrades.size}") + } tooltip.add("§7${crop.displayName} Fortune: §6+${upgradeLevel*5}☘") + tooltip.add("") if (repoData.cropUpgrades.size == upgradeLevel) { tooltip.add("§6Maxed") } else { - tooltip.add("§7${repoData.cropUpgrades[upgradeLevel]} §cCopper To Upgrade") + tooltip.add("§7Cost:") + tooltip.add("§c${repoData.cropUpgrades[upgradeLevel]} §7Copper to Upgrade") val totalCopper = repoData.cropUpgrades.sum() val sum = totalCopper - repoData.cropUpgrades.subList(0, upgradeLevel).sum() - tooltip.add("§7$sum §cCopper Until Max") + tooltip.add("§c$sum §7Copper to Max") } instance.tooltipToDisplay = tooltip } @@ -317,19 +326,46 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance var nextLevelString = "§6MAXED" var maxLevel = 0 var maxLevelString = "" + var formattedPercentage = "100.00" + var formattedMaxLevelPercentage = "100.00" + var aboveMaxMilestoneNumber: String + var lastCropMilestoneAmountRequired = 0 + + for (i in 0..45) { + maxLevel += levelsInfo[i] + if (i < collectionLevel + 1) nextLevel += levelsInfo[i] + if (i == 45) lastCropMilestoneAmountRequired = levelsInfo[i] + } if (!levelInfo.maxed) { - for (i in 0..45) { - maxLevel += levelsInfo[i] - if (i < (levelInfo.level.toInt() + 1)) nextLevel += levelsInfo[i] - } maxLevelString = StringUtils.formatNumber(maxLevel) - nextLevelString = "§f$formattedAmount§7/§f${StringUtils.formatNumber(nextLevel)} §7Until Next §eMilestone" + val remainingForNext = levelsInfo[collectionLevel] - (nextLevel - currentCollection) + val formattedRemainingForNext = StringUtils.formatNumber(remainingForNext.toDouble()) + nextLevelString = + "§e$formattedRemainingForNext§6/§e${StringUtils.formatNumber(levelsInfo[collectionLevel].toDouble())}" + + val percentage = (remainingForNext / levelsInfo[collectionLevel].toDouble()) * 100 + formattedPercentage = String.format("%.2f", percentage) + + val maxLevelPercentage = (currentCollection.toFloat() / maxLevel.toFloat()) * 100 + formattedMaxLevelPercentage = String.format("%.2f", maxLevelPercentage) } val tooltip = ArrayList<String>() - tooltip.add("§7Farmed: §f$formattedAmount") - tooltip.add(nextLevelString) + tooltip.add("§a${crop.displayName} $collectionLevel") + tooltip.add("§7Total: §a$formattedAmount") + tooltip.add("") if (!levelInfo.maxed) { - tooltip.add("§f$formattedAmount§7/§f$maxLevelString §7Until §6Max §eMilestone") + tooltip.add("Progress to Tier " + (levelInfo.level.toInt() + 1) + ": §e$formattedPercentage%") + tooltip.add(nextLevelString) + tooltip.add("") + tooltip.add("Progress to Tier 46: §e$formattedMaxLevelPercentage%") + tooltip.add("§e$formattedAmount§6/§e$maxLevelString") + } else { + val aboveMaxMilestone = + (currentCollection.toDouble() - maxLevel.toFloat()) + lastCropMilestoneAmountRequired + aboveMaxMilestoneNumber = StringUtils.formatNumber(aboveMaxMilestone) + tooltip.add("§7Overflow: §6$aboveMaxMilestoneNumber") + tooltip.add("") + tooltip.add("§6Max tier reached!") } drawAlignedStringWithHover( "§e${crop.displayName}", @@ -344,9 +380,9 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance private fun renderVisitorStats() { val xPos = guiLeft + 322 - var yPos = guiTop + 20 + var yPos = guiTop + 17 - Utils.renderShadowedString("§eVisitors", xPos + 40, yPos - 3, 80) + Utils.renderShadowedString("§eVisitors", xPos + 40, yPos - 2, 80) // todo progress bar! Utils.renderAlignedString( @@ -376,9 +412,9 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance val left = guiLeft + 190 val level = getLevel(repoData.gardenExperience, gardenData?.gardenExperience?.toLong()) if (level.maxed) { - instance.renderGoldBar((left).toFloat(), (top + 10).toFloat(), 80f) + instance.renderGoldBar((left).toFloat() + 16, (top + 10).toFloat(), 80f) } else { - instance.renderBar(left.toFloat(), (top + 10).toFloat(), 80f, level.level % 1) + instance.renderBar(left.toFloat() + 16, (top + 10).toFloat(), 80f, level.level % 1) } val maxXp = level.maxXpForLevel.toInt() @@ -400,14 +436,14 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance StringUtils.formatToTenths(instance.getPercentage("garden", level)) + "% to ${level.maxLevel})" ) - drawAlignedStringWithHover("§2Garden", "§f${level.level.toInt()}", left + 20, top, 60, gardenTooltip) - Utils.drawItemStack(ItemStack(Blocks.grass), left, top - 6) + drawAlignedStringWithHover("§2Garden", "§f${level.level.toInt()}", left + 36, top, 60, gardenTooltip) + Utils.drawItemStack(ItemStack(Blocks.grass), left + 16, top - 6) val copper = apiData?.garden_player_data?.copper ?: 0 Utils.renderAlignedString( - "§cCopper:", + "§cCopper", "§f" + StringUtils.formatNumber(copper), - (left).toFloat(), + (left + 16).toFloat(), (top + 20).toFloat(), 80 ) @@ -418,7 +454,14 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance val left = guiLeft + 190 if (eliteData == null) { - drawAlignedStringWithHover("§eFarming Weight", "§eLoading...", left, top, 100, listOf("§eLoading...", "§eTry again soon!")) + drawAlignedStringWithHover( + "§eFarming Weight", + "§eLoading...", + left + 16, + top, + 95, + listOf("§eLoading...", "§eTry again soon!") + ) return } @@ -433,16 +476,35 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance val cropWeight = eliteData?.cropWeight?.get(crop) ?: 0.0 add("§7${crop.displayName}: §f${StringUtils.formatNumber(cropWeight)}") } + add("") + add("Data provided by the Elitebot API.") + add("§eClick to view on the Elitebot website.") } - drawAlignedStringWithHover("§eFarming Weight", "§f${StringUtils.formatNumber(totalWeight)}", left, top, 100, tooltip) + drawAlignedStringWithHover( + "§eFarming Weight", + "§f${StringUtils.formatNumber(totalWeight.toInt())}", + left + 11, + top, + 90, + tooltip + ) + } + + override fun mouseClicked(mouseX: Int, mouseY: Int, mouseButton: Int): Boolean { + if (mouseButton == 0) { + if (mouseX in (guiLeft + 190)..(guiLeft + 290) && mouseY in (guiTop + 51)..(guiTop + 60)) { + openWebsite() + } + } + return false } private fun renderCompost() { val xPos = guiLeft + 322 - var yPos = guiTop + 118 + var yPos = guiTop + 122 - Utils.renderShadowedString("§eCompost Upgrades", xPos + 40, yPos, 80) + Utils.renderShadowedString("§eCompost Upgrades", xPos + 40, yPos - 2, 80) yPos += 12 val (speed, multiDrop, fuelCap, organicMatterCap, costReduction) = gardenData?.composterData?.upgrades ?: return @@ -475,9 +537,12 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance val upgradeValues = repoData.composterUpgrades[repoName]?.get(upgradeAmount + 1) val upgradeValuesCurrent = repoData.composterUpgrades[repoName]?.get(upgradeAmount)?.upgrade ?: 0 val upgradeValuesCurrentSt = StringUtils.formatNumber(upgradeValuesCurrent) + tooltip.add("$upgradeName $upgradeAmount") if (upgradeValues != null) { repoData.composterTooltips[repoName]?.replace("{}", "$upgradeValuesCurrentSt -> ${StringUtils.formatNumber(upgradeValues.upgrade)}") ?.let { tooltip.add(it) } + tooltip.add("") + tooltip.add("§7Cost:") for (item in upgradeValues.items) { val itemStack = manager.createItem(item.key.uppercase()) if (itemStack == null) { @@ -505,6 +570,12 @@ class GardenPage(pvInstance: GuiProfileViewer) : GuiProfileViewerPage(pvInstance return ProfileViewerUtils.getLevel(array, (currentExp ?: 0).toFloat(), experienceList.size, false) } + private fun openWebsite() { + if (eliteData == null) return + Utils.openUrl("https://elitebot.dev/@" + GuiProfileViewer.getDisplayName() + "/" + GuiProfileViewer.getProfileName()) + Utils.playPressSound() + } + private fun drawAlignedStringWithHover( first: String, second: String, diff --git a/src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.png b/src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.png Binary files differindex e7ee2dfa..d88dd21b 100644 --- a/src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.png +++ b/src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.png |
