aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjani270 <69345714+jani270@users.noreply.github.com>2024-08-13 23:01:32 +0200
committerGitHub <noreply@github.com>2024-08-13 23:01:32 +0200
commitc8e10f2daebc745509757ee0e25ca3354417cd0f (patch)
tree9b74a08d6e347d8b3f3a9e0e809d995ccf8ce98d
parent30479790c8f47eb59bc0157cecf3bf4fb8ad5963 (diff)
downloadnotenoughupdates-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.kt115
-rw-r--r--src/main/resources/assets/notenoughupdates/profile_viewer/garden/background.pngbin5505 -> 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
index 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
Binary files differ