aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons
diff options
context:
space:
mode:
authornmccullagh <narhanael64@gmail.com>2024-07-03 20:43:31 +0100
committernmccullagh <narhanael64@gmail.com>2024-07-06 19:01:10 +0100
commit9bce5935109c2922887e282e8fc093b13e49c0a4 (patch)
treea5745322ac1ed2ac10ba8388c4e05ede97e01ff7 /src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons
parentff1d61e162ea1f1fd5e49584d00a3ce1128ff6fc (diff)
downloadSkyblocker-9bce5935109c2922887e282e8fc093b13e49c0a4.tar.gz
Skyblocker-9bce5935109c2922887e282e8fc093b13e49c0a4.tar.bz2
Skyblocker-9bce5935109c2922887e282e8fc093b13e49c0a4.zip
some changes
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonClassWidget.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonFloorRunsWidget.java35
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonsPage.java4
4 files changed, 48 insertions, 8 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonClassWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonClassWidget.java
index 3b847b1b..37953a2b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonClassWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonClassWidget.java
@@ -3,15 +3,20 @@ package de.hysky.skyblocker.skyblock.profileviewer.dungeons;
import com.google.gson.JsonObject;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.skyblock.profileviewer.utils.LevelFinder;
+import de.hysky.skyblocker.skyblock.profileviewer.utils.ProfileViewerUtils;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import de.hysky.skyblocker.utils.render.RenderHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
public class DungeonClassWidget {
@@ -48,7 +53,7 @@ public class DungeonClassWidget {
}
}
- public void render(DrawContext context, int x, int y) {
+ public void render(DrawContext context, int mouseX, int mouseY, int x, int y) {
context.drawTexture(TEXTURE, x, y, 0, 0, 109, 26, 109, 26);
context.drawItem(stack, x + 3, y + 5);
if (active) context.drawTexture(ACTIVE_TEXTURE, x + 3, y + 5, 0, 0, 16, 16, 16, 16);
@@ -57,6 +62,12 @@ public class DungeonClassWidget {
Color fillColor = classLevel.level >= CLASS_CAP ? Color.MAGENTA : Color.GREEN;
context.drawGuiTexture(BAR_BACK, x + 30, y + 15, 75, 6);
RenderHelper.renderNineSliceColored(context, BAR_FILL, x + 30, y + 15, (int) (75 * classLevel.fill), 6, fillColor);
- }
+ if (mouseX > x + 30 && mouseX < x + 105 && mouseY > y + 12 && mouseY < y + 22){
+ List<Text> tooltipText = new ArrayList<>();
+ tooltipText.add(Text.literal(this.className).formatted(Formatting.GREEN));
+ tooltipText.add(Text.literal("XP: " + ProfileViewerUtils.COMMA_FORMATTER.format(this.classLevel.xp)).formatted(Formatting.GOLD));
+ context.drawTooltip(textRenderer, tooltipText, mouseX, mouseY);
+ }
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonFloorRunsWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonFloorRunsWidget.java
index 7c9206c0..b592266a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonFloorRunsWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonFloorRunsWidget.java
@@ -11,6 +11,8 @@ import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
public class DungeonFloorRunsWidget {
@@ -26,8 +28,7 @@ public class DungeonFloorRunsWidget {
} catch (Exception ignored) {}
}
- // TODO: Hovering on each floor should probably showcase best run times in a tooltip
- public void render(DrawContext context, int x, int y) {
+ public void render(DrawContext context, int mouseX ,int mouseY, int x, int y) {
context.drawTexture(TEXTURE, x, y, 0, 0, 109, 110, 109, 110);
context.drawText(textRenderer, Text.literal("Floor Runs").formatted(Formatting.BOLD), x + 6, y + 4, Color.WHITE.getRGB(), true);
@@ -36,12 +37,33 @@ public class DungeonFloorRunsWidget {
for (String dungeon : DUNGEONS) {
JsonObject dungeonData;
try {
- dungeonData = dungeonsStats.getAsJsonObject(dungeon).getAsJsonObject(dungeon.equals("catacombs") ? "times_played" : "tier_completions");
+ dungeonData = dungeonsStats.getAsJsonObject(dungeon).getAsJsonObject("tier_completions");
for (Map.Entry<String, JsonElement> entry : dungeonData.entrySet()) {
if (entry.getKey().equals("total")) continue;
String textToRender = String.format((dungeon.equals("catacombs") ? "§aF" : "§cM") + "%s§r %s", entry.getKey(), entry.getValue().getAsInt());
context.drawText(textRenderer, textToRender, columnX + 2, elementY + 2, Color.WHITE.getRGB(), true);
+ if (!entry.getKey().equals("0") && mouseX >= columnX && mouseX <= columnX + 40 && mouseY >= elementY && mouseY <= elementY + 9) {
+ List<Text> tooltipText = new ArrayList<>();
+ tooltipText.add(Text.literal("Personal Bests").formatted(Formatting.BOLD, Formatting.LIGHT_PURPLE));
+
+ JsonObject fastestTimes = dungeonsStats.getAsJsonObject(dungeon).getAsJsonObject("fastest_time_s");
+ if (fastestTimes != null && fastestTimes.has(entry.getKey())) {
+ tooltipText.add(Text.literal("S Run: " + formatTime(fastestTimes.get(entry.getKey()).getAsLong())).formatted(Formatting.GOLD));
+ }
+
+ fastestTimes = dungeonsStats.getAsJsonObject(dungeon).getAsJsonObject("fastest_time_s_plus");
+ if (fastestTimes != null && fastestTimes.has(entry.getKey())) {
+ tooltipText.add(Text.literal("S+ Run: " + formatTime(fastestTimes.get(entry.getKey()).getAsLong())).formatted(Formatting.GOLD));
+ }
+
+ fastestTimes = dungeonsStats.getAsJsonObject(dungeon).getAsJsonObject("fastest_time");
+ if (fastestTimes != null && fastestTimes.has(entry.getKey()) && tooltipText.size() == 1) {
+ tooltipText.add(Text.literal("Completion: " + formatTime(fastestTimes.get(entry.getKey()).getAsLong())).formatted(Formatting.GOLD));
+ }
+
+ context.drawTooltip(textRenderer, tooltipText, mouseX, mouseY);
+ }
elementY += 11;
}
@@ -52,4 +74,11 @@ public class DungeonFloorRunsWidget {
}
}
}
+
+ private String formatTime(long milliseconds) {
+ long seconds = milliseconds / 1000;
+ long minutes = seconds / 60;
+ seconds %= 60;
+ return String.format("%2d:%02d", minutes, seconds);
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java
index 679cc575..780eec24 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonMiscStatsWidgets.java
@@ -31,7 +31,7 @@ public class DungeonMiscStatsWidgets {
secrets = DUNGEONS_DATA.get("secrets").getAsInt();
for (String dungeon : DUNGEONS) {
- JsonObject dungeonData = DUNGEONS_DATA.getAsJsonObject("dungeon_types").getAsJsonObject(dungeon).getAsJsonObject(dungeon.equals("catacombs") ? "times_played" : "tier_completions");
+ JsonObject dungeonData = DUNGEONS_DATA.getAsJsonObject("dungeon_types").getAsJsonObject(dungeon).getAsJsonObject("tier_completions");
int runs = 0;
for (Map.Entry<String, JsonElement> entry : dungeonData.entrySet()) {
String key = entry.getKey();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonsPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonsPage.java
index b1398661..e0051c88 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonsPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/dungeons/DungeonsPage.java
@@ -30,10 +30,10 @@ public class DungeonsPage implements ProfileViewerPage {
public void render(DrawContext context, int mouseX, int mouseY, float delta, int rootX, int rootY) {
dungeonHeaderWidget.render(context, rootX, rootY);
- dungeonFloorRunsWidget.render(context, rootX + 113, rootY + 56);
+ dungeonFloorRunsWidget.render(context, mouseX, mouseY, rootX + 113, rootY + 56);
dungeonMiscStatsWidgets.render(context, rootX + 113, rootY);
for (int i = 0; i < dungeonClassWidgetsList.size(); i++) {
- dungeonClassWidgetsList.get(i).render(context, rootX, rootY + 28 + i * 28);
+ dungeonClassWidgetsList.get(i).render(context, mouseX, mouseY, rootX, rootY + 28 + i * 28);
}
}
}