From f9c6242980a2cb7ee1cb9b68898d9a621bce89ee Mon Sep 17 00:00:00 2001 From: jani270 <69345714+jani270@users.noreply.github.com> Date: Thu, 31 Jul 2025 22:12:07 +0200 Subject: feat: Progress bar on skill widget --- .../profileviewer/rework/pages/SkillWidget.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java index 485d3a1b..cd19b2b0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java @@ -48,7 +48,7 @@ final class SkillWidget implements ProfileViewerWidget { public void render(DrawContext drawContext, int x, int y, int mouseX, int mouseY, float deltaTicks) { drawContext.drawTexture(RenderPipelines.GUI_TEXTURED, ICON_DATA_TEXTURE, x, y, 0, 0, WIDTH, HEIGHT, WIDTH, HEIGHT); - drawContext.drawItem(skill.getIcon(), x + 3, y + 4); + drawContext.drawItem(skill.getIcon(), x + 3, y + 5); drawContext.drawText(textRenderer, skill.getName() + " " + levelInfo.level, x + 31, y + 4, -1, false); Color fillColor = Color.GREEN; var skillCap = NEURepoManager.getConstants().getLeveling().getMaximumLevels().get(skill.name().toLowerCase(Locale.ROOT)); @@ -61,12 +61,26 @@ final class SkillWidget implements ProfileViewerWidget { // TODO: add helper for hover selection if (mouseX > x + 30 && mouseX < x + 105 && mouseY > y + 14 && mouseY < y + 21) { + StringBuilder bar = new StringBuilder("§3§l§m"); + int filledBar = (int) Math.round(levelInfo.fill * 14); + for (int j = 1; j <= 14; j++) { + if (j <= filledBar) { + bar.append("§2§l§m "); + } else { + bar.append("§f§l§m "); + } + } + List tooltipText = new ArrayList<>(); - tooltipText.add(Text.literal(skill.getName()).formatted(Formatting.GREEN)); - tooltipText.add(Text.literal("XP: " + Formatters.INTEGER_NUMBERS.format(levelInfo.xp)).formatted(Formatting.GOLD)); + tooltipText.add(Text.literal(skill.getName() + " " + levelInfo.level).formatted(Formatting.GREEN)); if (levelInfo.level < skillCap) { - tooltipText.add(Text.literal("XP till " + (levelInfo.level + 1) + ": " + Formatters.INTEGER_NUMBERS.format(levelInfo.nextLevelXP - levelInfo.levelXP)).formatted(Formatting.GRAY)); + tooltipText.add(Text.literal("Progress to Level " + (levelInfo.level + 1) + ":").formatted(Formatting.GRAY)); + tooltipText.add(Text.literal((bar) + "§r " + Formatters.INTEGER_NUMBERS.format(levelInfo.nextLevelXP - levelInfo.levelXP) + "/" + Formatters.SHORT_INTEGER_NUMBERS.format(levelInfo.nextLevelXP)).formatted(Formatting.YELLOW)); + tooltipText.add(Text.literal("XP till " + (levelInfo.level + 1) + ": §e" + Formatters.INTEGER_NUMBERS.format(levelInfo.nextLevelXP - levelInfo.levelXP)).formatted(Formatting.GRAY)); + } else { + tooltipText.add(Text.literal("Progress: §6MAXED").formatted(Formatting.GRAY)); } + tooltipText.add(Text.literal("§7Total XP: §r" + Formatters.INTEGER_NUMBERS.format(levelInfo.xp)).formatted(Formatting.YELLOW)); drawContext.drawTooltip(textRenderer, tooltipText, mouseX, mouseY); } } -- cgit