aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ErrorPage.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/LoadingPage.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsLevelWidget.java102
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsPage.java13
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java31
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerLevelWidget.java101
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerWidget.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerKillsWidget.java)8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayersPage.java26
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/widgets/BarWidget.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java)27
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/widgets/TextWidget.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/TextWidget.java)3
10 files changed, 61 insertions, 252 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ErrorPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ErrorPage.java
index 53a29544..b14dd0e2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ErrorPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ErrorPage.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.profileviewer.rework;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.widgets.TextWidget;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/LoadingPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/LoadingPage.java
index 4d326277..f707b9e8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/LoadingPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/LoadingPage.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.profileviewer.rework;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.widgets.TextWidget;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsLevelWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsLevelWidget.java
deleted file mode 100644
index d93db388..00000000
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsLevelWidget.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
-
-import de.hysky.skyblocker.SkyblockerMod;
-import de.hysky.skyblocker.skyblock.profileviewer.model.Dungeons;
-import de.hysky.skyblocker.skyblock.profileviewer.model.SlayerData;
-import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerWidget;
-import de.hysky.skyblocker.skyblock.profileviewer.utils.LevelFinder;
-import de.hysky.skyblocker.utils.render.HudHelper;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.font.TextRenderer;
-import net.minecraft.client.gl.RenderPipelines;
-import net.minecraft.client.gui.DrawContext;
-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 static de.hysky.skyblocker.utils.Formatters.INTEGER_NUMBERS;
-import static de.hysky.skyblocker.utils.Formatters.SHORT_INTEGER_NUMBERS;
-
-final class DungeonsLevelWidget implements ProfileViewerWidget {
- private static final Identifier ICON_DATA_TEXTURE = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/profile_viewer/icon_data_widget.png");
- private static final Identifier BAR_FILL = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_fill");
- private static final Identifier BAR_BACK = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_back");
-
- private final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
- private final Dungeons.Class dungeonClass;
- private final LevelFinder.LevelInfo levelInfo;
-
- DungeonsLevelWidget(
- Dungeons.Class dungeonClass,
- LevelFinder.LevelInfo levelInfo
- ) {
- this.dungeonClass = dungeonClass;
- this.levelInfo = levelInfo;
- }
-
- public static final int WIDTH = 109;
- public static final int HEIGHT = 26;
-
- @Override
- 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(dungeonClass.getIcon(), x + 3, y + 5);
- drawContext.drawText(textRenderer, dungeonClass.getName() + " " + levelInfo.level, x + 31, y + 4, -1, false);
- Color fillColor = Color.GREEN;
- var levelCap = dungeonClass.getName().equals("Vampire") ? 5 : 9;
- if (levelInfo.level >= levelCap)
- fillColor = Color.MAGENTA;
- drawContext.drawGuiTexture(RenderPipelines.GUI_TEXTURED, BAR_BACK, x + 30, y + 14, 75, 6);
- HudHelper.renderNineSliceColored(drawContext, BAR_FILL, x + 30, y + 14, (int) (75 * levelInfo.fill), 6, fillColor);
-
- // TODO: add helper for hover selection
- if (mouseX > x + 30 && mouseX < x + 105 && mouseY > y + 14 && mouseY < y + 21) {
- List<Text> tooltipText = new ArrayList<>();
- tooltipText.add(Text.literal(dungeonClass.getName() + " " + levelInfo.level).formatted(Formatting.GREEN));
- if (levelInfo.level < levelCap) {
- tooltipText.add(Text.literal("Progress to Level " + (levelInfo.level + 1) + ":").formatted(Formatting.GRAY));
- tooltipText.add(Text.literal("")
- .append(formatBar(levelInfo.fill, 15, Formatting.DARK_GREEN, Formatting.GRAY))
- .append(" ")
- .append(INTEGER_NUMBERS.format(levelInfo.levelXP))
- .append("/")
- .append(SHORT_INTEGER_NUMBERS.format(levelInfo.nextLevelXP))
- .formatted(Formatting.YELLOW));
- tooltipText.add(
- Text.literal("XP till " + (levelInfo.level + 1) + ": ")
- .append(Text.literal(INTEGER_NUMBERS.format(levelInfo.nextLevelXP - levelInfo.levelXP)).formatted(Formatting.YELLOW))
- .formatted(Formatting.GRAY));
- } else {
- tooltipText.add(Text.literal("Progress: §6MAXED").formatted(Formatting.GRAY));
- }
- tooltipText.add(Text.literal("§7Total XP: §r" + INTEGER_NUMBERS.format(levelInfo.xp)).formatted(Formatting.YELLOW));
- drawContext.drawTooltip(textRenderer, tooltipText, mouseX, mouseY);
- }
- }
-
- private static Text formatBar(double percentage, int total, Formatting filledStyle, Formatting emptyStyle) {
- return formatBar((int) Math.round(percentage * total), total, filledStyle, emptyStyle);
- }
-
- private static Text formatBar(int filled, int total, Formatting filledStyle, Formatting emptyStyle) {
- assert filled <= total;
- return Text.literal("")
- .append(Text.literal(" ".repeat(filled)).formatted(filledStyle, Formatting.STRIKETHROUGH, Formatting.BOLD))
- .append(Text.literal(" ".repeat(total - filled)).formatted(emptyStyle, Formatting.STRIKETHROUGH, Formatting.BOLD));
- }
-
- @Override
- public int getHeight() {
- return HEIGHT;
- }
-
- @Override
- public int getWidth() {
- return WIDTH;
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsPage.java
index 966b1acf..608e659b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/DungeonsPage.java
@@ -8,6 +8,7 @@ import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileLoadState;
import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerPage;
import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerScreenRework;
import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerWidget;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.widgets.BarWidget;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
@@ -22,12 +23,12 @@ public class DungeonsPage implements ProfileViewerPage {
public DungeonsPage(ProfileLoadState.SuccessfulLoad load) {
var dungeonsData = load.member().dungeons;
List<ProfileViewerWidget> dungeons = new ArrayList<>();
- dungeons.add(new SkillWidget(PlayerData.Skill.CATACOMBS, PlayerData.Skill.CATACOMBS.getLevelInfo(dungeonsData.dungeonInfo.catacombs.experience), OptionalInt.empty()));
- dungeons.add(new DungeonsLevelWidget(Dungeons.Class.HEALER, dungeonsData.getClassData(Dungeons.Class.HEALER).getLevelInfo()));
- dungeons.add(new DungeonsLevelWidget(Dungeons.Class.MAGE, dungeonsData.getClassData(Dungeons.Class.MAGE).getLevelInfo()));
- dungeons.add(new DungeonsLevelWidget(Dungeons.Class.BERSERK, dungeonsData.getClassData(Dungeons.Class.BERSERK).getLevelInfo()));
- dungeons.add(new DungeonsLevelWidget(Dungeons.Class.ARCHER, dungeonsData.getClassData(Dungeons.Class.ARCHER).getLevelInfo()));
- dungeons.add(new DungeonsLevelWidget(Dungeons.Class.TANK, dungeonsData.getClassData(Dungeons.Class.TANK).getLevelInfo()));
+ dungeons.add(new BarWidget(PlayerData.Skill.CATACOMBS.getName(), PlayerData.Skill.CATACOMBS.getIcon(), PlayerData.Skill.CATACOMBS.getLevelInfo(dungeonsData.dungeonInfo.catacombs.experience), OptionalInt.empty(), OptionalInt.empty()));
+ dungeons.add(new BarWidget(Dungeons.Class.HEALER.getName(), Dungeons.Class.HEALER.getIcon(), dungeonsData.getClassData(Dungeons.Class.HEALER).getLevelInfo(), OptionalInt.empty(), OptionalInt.empty()));
+ dungeons.add(new BarWidget(Dungeons.Class.MAGE.getName(), Dungeons.Class.MAGE.getIcon(), dungeonsData.getClassData(Dungeons.Class.MAGE).getLevelInfo(), OptionalInt.empty(), OptionalInt.empty()));
+ dungeons.add(new BarWidget(Dungeons.Class.BERSERK.getName(), Dungeons.Class.BERSERK.getIcon(), dungeonsData.getClassData(Dungeons.Class.BERSERK).getLevelInfo(), OptionalInt.empty(), OptionalInt.empty()));
+ dungeons.add(new BarWidget(Dungeons.Class.ARCHER.getName(), Dungeons.Class.ARCHER.getIcon(), dungeonsData.getClassData(Dungeons.Class.ARCHER).getLevelInfo(), OptionalInt.empty(), OptionalInt.empty()));
+ dungeons.add(new BarWidget(Dungeons.Class.TANK.getName(), Dungeons.Class.TANK.getIcon(), dungeonsData.getClassData(Dungeons.Class.TANK).getLevelInfo(), OptionalInt.empty(), OptionalInt.empty()));
int i = 0;
for (var dungeon : dungeons) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
index 8329af92..eebb2821 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.skyblock.profileviewer.model.PlayerData;
import de.hysky.skyblocker.skyblock.profileviewer.rework.*;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.widgets.BarWidget;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
@@ -15,25 +16,27 @@ public class SkillsPage implements ProfileViewerPage {
public SkillsPage(ProfileLoadState.SuccessfulLoad load) {
var playerData = load.member().playerData;
- List<SkillWidget> skills = new ArrayList<>();
- skills.add(new SkillWidget(PlayerData.Skill.COMBAT, playerData.getSkillLevel(PlayerData.Skill.COMBAT), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.MINING, playerData.getSkillLevel(PlayerData.Skill.MINING), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.FARMING, playerData.getSkillLevel(PlayerData.Skill.FARMING), OptionalInt.of(50)));
- skills.add(new SkillWidget(PlayerData.Skill.FORAGING, playerData.getSkillLevel(PlayerData.Skill.FORAGING), OptionalInt.of(50)));
- skills.add(new SkillWidget(PlayerData.Skill.FISHING, playerData.getSkillLevel(PlayerData.Skill.FISHING), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.ENCHANTING, playerData.getSkillLevel(PlayerData.Skill.ENCHANTING), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.ALCHEMY, playerData.getSkillLevel(PlayerData.Skill.ALCHEMY), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.TAMING, playerData.getSkillLevel(PlayerData.Skill.TAMING), OptionalInt.of(50)));
- skills.add(new SkillWidget(PlayerData.Skill.CARPENTRY, playerData.getSkillLevel(PlayerData.Skill.CARPENTRY), OptionalInt.empty()));
+ List<ProfileViewerWidget> skills = new ArrayList<>();
+ skills.add(new BarWidget(PlayerData.Skill.COMBAT.getName(), PlayerData.Skill.COMBAT.getIcon(), playerData.getSkillLevel(PlayerData.Skill.COMBAT), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.MINING.getName(),PlayerData.Skill.MINING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.MINING), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.FARMING.getName(), PlayerData.Skill.FARMING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.FARMING), OptionalInt.empty(), OptionalInt.of(50)));
+ skills.add(new BarWidget(PlayerData.Skill.FORAGING.getName(), PlayerData.Skill.FORAGING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.FORAGING), OptionalInt.empty(), OptionalInt.of(50)));
+ skills.add(new BarWidget(PlayerData.Skill.FISHING.getName(),PlayerData.Skill.FISHING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.FISHING), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.ENCHANTING.getName(),PlayerData.Skill.ENCHANTING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.ENCHANTING), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.ALCHEMY.getName(),PlayerData.Skill.ALCHEMY.getIcon(), playerData.getSkillLevel(PlayerData.Skill.ALCHEMY), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.TAMING.getName(), PlayerData.Skill.TAMING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.TAMING), OptionalInt.empty(), OptionalInt.of(50)));
+ skills.add(new BarWidget(PlayerData.Skill.CARPENTRY.getName(),PlayerData.Skill.CARPENTRY.getIcon(), playerData.getSkillLevel(PlayerData.Skill.CARPENTRY), OptionalInt.empty(), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.CATACOMBS, PlayerData.Skill.CATACOMBS.getLevelInfo(load.member().dungeons.dungeonInfo.catacombs.experience), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.RUNECRAFTING, playerData.getSkillLevel(PlayerData.Skill.RUNECRAFTING), OptionalInt.empty()));
- skills.add(new SkillWidget(
- PlayerData.Skill.SOCIAL,
+ skills.add(new BarWidget(PlayerData.Skill.CATACOMBS.getName(), PlayerData.Skill.CATACOMBS.getIcon(), PlayerData.Skill.CATACOMBS.getLevelInfo(load.member().dungeons.dungeonInfo.catacombs.experience), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(PlayerData.Skill.RUNECRAFTING.getName(), PlayerData.Skill.RUNECRAFTING.getIcon(), playerData.getSkillLevel(PlayerData.Skill.RUNECRAFTING), OptionalInt.empty(), OptionalInt.empty()));
+ skills.add(new BarWidget(
+ PlayerData.Skill.SOCIAL.getName(),
+ PlayerData.Skill.SOCIAL.getIcon(),
PlayerData.Skill.SOCIAL.getLevelInfo(
load.profile().members.values()
.stream().mapToDouble(it -> it.playerData.getSkillExperience(PlayerData.Skill.SOCIAL))
.sum()),
+ OptionalInt.empty(),
OptionalInt.empty()));
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerLevelWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerLevelWidget.java
deleted file mode 100644
index ccb32abd..00000000
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerLevelWidget.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
-
-import de.hysky.skyblocker.SkyblockerMod;
-import de.hysky.skyblocker.skyblock.profileviewer.model.SlayerData;
-import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerWidget;
-import de.hysky.skyblocker.skyblock.profileviewer.utils.LevelFinder;
-import de.hysky.skyblocker.utils.render.HudHelper;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.font.TextRenderer;
-import net.minecraft.client.gl.RenderPipelines;
-import net.minecraft.client.gui.DrawContext;
-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 static de.hysky.skyblocker.utils.Formatters.INTEGER_NUMBERS;
-import static de.hysky.skyblocker.utils.Formatters.SHORT_INTEGER_NUMBERS;
-
-final class SlayerLevelWidget implements ProfileViewerWidget {
- private static final Identifier ICON_DATA_TEXTURE = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/profile_viewer/icon_data_widget.png");
- private static final Identifier BAR_FILL = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_fill");
- private static final Identifier BAR_BACK = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_back");
-
- private final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
- private final SlayerData.Slayer slayer;
- private final LevelFinder.LevelInfo levelInfo;
-
- SlayerLevelWidget(
- SlayerData.Slayer slayer,
- LevelFinder.LevelInfo levelInfo
- ) {
- this.slayer = slayer;
- this.levelInfo = levelInfo;
- }
-
- public static final int WIDTH = 109;
- public static final int HEIGHT = 26;
-
- @Override
- 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(slayer.getIcon(), x + 3, y + 5);
- drawContext.drawText(textRenderer, slayer.getName() + " " + levelInfo.level, x + 31, y + 4, -1, false);
- Color fillColor = Color.GREEN;
- var levelCap = slayer.getName().equals("Vampire") ? 5 : 9;
- if (levelInfo.level >= levelCap)
- fillColor = Color.MAGENTA;
- drawContext.drawGuiTexture(RenderPipelines.GUI_TEXTURED, BAR_BACK, x + 30, y + 14, 75, 6);
- HudHelper.renderNineSliceColored(drawContext, BAR_FILL, x + 30, y + 14, (int) (75 * levelInfo.fill), 6, fillColor);
-
- // TODO: add helper for hover selection
- if (mouseX > x + 30 && mouseX < x + 105 && mouseY > y + 14 && mouseY < y + 21) {
- List<Text> tooltipText = new ArrayList<>();
- tooltipText.add(Text.literal(slayer.getName() + " " + levelInfo.level).formatted(Formatting.GREEN));
- if (levelInfo.level < levelCap) {
- tooltipText.add(Text.literal("Progress to Level " + (levelInfo.level + 1) + ":").formatted(Formatting.GRAY));
- tooltipText.add(Text.literal("")
- .append(formatBar(levelInfo.fill, 15, Formatting.DARK_GREEN, Formatting.GRAY))
- .append(" ")
- .append(INTEGER_NUMBERS.format(levelInfo.levelXP))
- .append("/")
- .append(SHORT_INTEGER_NUMBERS.format(levelInfo.nextLevelXP))
- .formatted(Formatting.YELLOW));
- tooltipText.add(
- Text.literal("XP till " + (levelInfo.level + 1) + ": ")
- .append(Text.literal(INTEGER_NUMBERS.format(levelInfo.nextLevelXP - levelInfo.levelXP)).formatted(Formatting.YELLOW))
- .formatted(Formatting.GRAY));
- } else {
- tooltipText.add(Text.literal("Progress: §6MAXED").formatted(Formatting.GRAY));
- }
- tooltipText.add(Text.literal("§7Total XP: §r" + INTEGER_NUMBERS.format(levelInfo.xp)).formatted(Formatting.YELLOW));
- drawContext.drawTooltip(textRenderer, tooltipText, mouseX, mouseY);
- }
- }
-
- private static Text formatBar(double percentage, int total, Formatting filledStyle, Formatting emptyStyle) {
- return formatBar((int) Math.round(percentage * total), total, filledStyle, emptyStyle);
- }
-
- private static Text formatBar(int filled, int total, Formatting filledStyle, Formatting emptyStyle) {
- assert filled <= total;
- return Text.literal("")
- .append(Text.literal(" ".repeat(filled)).formatted(filledStyle, Formatting.STRIKETHROUGH, Formatting.BOLD))
- .append(Text.literal(" ".repeat(total - filled)).formatted(emptyStyle, Formatting.STRIKETHROUGH, Formatting.BOLD));
- }
-
- @Override
- public int getHeight() {
- return HEIGHT;
- }
-
- @Override
- public int getWidth() {
- return WIDTH;
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerKillsWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerWidget.java
index b5e275c1..800305bf 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerKillsWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayerWidget.java
@@ -9,23 +9,19 @@ import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gl.RenderPipelines;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.util.ArrayList;
import java.util.List;
-import static de.hysky.skyblocker.utils.Formatters.INTEGER_NUMBERS;
-import static de.hysky.skyblocker.utils.Formatters.SHORT_INTEGER_NUMBERS;
-
-final class SlayerKillsWidget implements ProfileViewerWidget {
+final class SlayerWidget implements ProfileViewerWidget {
private static final Identifier ICON_DATA_TEXTURE = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/profile_viewer/icon_data_widget.png");
private final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
private final SlayerData.Slayer slayer;
private final SlayerBoss slayerData;
- SlayerKillsWidget(
+ SlayerWidget(
SlayerData.Slayer slayer,
SlayerBoss slayerData
) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayersPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayersPage.java
index 158fbb1e..cf75a604 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayersPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SlayersPage.java
@@ -3,10 +3,12 @@ package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.skyblock.profileviewer.model.SlayerData;
import de.hysky.skyblocker.skyblock.profileviewer.rework.*;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.widgets.BarWidget;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.List;
+import java.util.OptionalInt;
public class SlayersPage implements ProfileViewerPage {
@@ -16,19 +18,19 @@ public class SlayersPage implements ProfileViewerPage {
var slayerData = load.member().slayer;
// TODO: Maybe make it's own SlayerWidget
List<ProfileViewerWidget> slayers = new ArrayList<>();
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.REVENANT_HORROR, slayerData.getSkillLevel(SlayerData.Slayer.REVENANT_HORROR)));
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.TARANTULA_BROODFATHER, slayerData.getSkillLevel(SlayerData.Slayer.TARANTULA_BROODFATHER)));
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.SVEN_PACKMASTER, slayerData.getSkillLevel(SlayerData.Slayer.SVEN_PACKMASTER)));
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.VOIDGLOOM_SERAPH, slayerData.getSkillLevel(SlayerData.Slayer.VOIDGLOOM_SERAPH)));
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND, slayerData.getSkillLevel(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND)));
- slayers.add(new SlayerLevelWidget(SlayerData.Slayer.INFERNO_DEMONLORD, slayerData.getSkillLevel(SlayerData.Slayer.INFERNO_DEMONLORD)));
+ slayers.add(new BarWidget(SlayerData.Slayer.REVENANT_HORROR.getName(), SlayerData.Slayer.REVENANT_HORROR.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.REVENANT_HORROR), OptionalInt.empty(), OptionalInt.empty()));
+ slayers.add(new BarWidget(SlayerData.Slayer.TARANTULA_BROODFATHER.getName(), SlayerData.Slayer.TARANTULA_BROODFATHER.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.TARANTULA_BROODFATHER), OptionalInt.empty(), OptionalInt.empty()));
+ slayers.add(new BarWidget(SlayerData.Slayer.SVEN_PACKMASTER.getName(), SlayerData.Slayer.SVEN_PACKMASTER.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.SVEN_PACKMASTER), OptionalInt.empty(), OptionalInt.empty()));
+ slayers.add(new BarWidget(SlayerData.Slayer.VOIDGLOOM_SERAPH.getName(), SlayerData.Slayer.VOIDGLOOM_SERAPH.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.VOIDGLOOM_SERAPH), OptionalInt.empty(), OptionalInt.empty()));
+ slayers.add(new BarWidget(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND.getName(), SlayerData.Slayer.RIFTSTALKER_BLOODFIEND.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND), OptionalInt.empty(), OptionalInt.empty()));
+ slayers.add(new BarWidget(SlayerData.Slayer.INFERNO_DEMONLORD.getName(), SlayerData.Slayer.INFERNO_DEMONLORD.getIcon(), slayerData.getSkillLevel(SlayerData.Slayer.INFERNO_DEMONLORD), OptionalInt.empty(), OptionalInt.empty()));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.REVENANT_HORROR, slayerData.getSlayerData(SlayerData.Slayer.REVENANT_HORROR)));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.TARANTULA_BROODFATHER, slayerData.getSlayerData(SlayerData.Slayer.TARANTULA_BROODFATHER)));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.SVEN_PACKMASTER, slayerData.getSlayerData(SlayerData.Slayer.SVEN_PACKMASTER)));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.VOIDGLOOM_SERAPH, slayerData.getSlayerData(SlayerData.Slayer.VOIDGLOOM_SERAPH)));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND, slayerData.getSlayerData(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND)));
- slayers.add(new SlayerKillsWidget(SlayerData.Slayer.INFERNO_DEMONLORD, slayerData.getSlayerData(SlayerData.Slayer.INFERNO_DEMONLORD)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.REVENANT_HORROR, slayerData.getSlayerData(SlayerData.Slayer.REVENANT_HORROR)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.TARANTULA_BROODFATHER, slayerData.getSlayerData(SlayerData.Slayer.TARANTULA_BROODFATHER)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.SVEN_PACKMASTER, slayerData.getSlayerData(SlayerData.Slayer.SVEN_PACKMASTER)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.VOIDGLOOM_SERAPH, slayerData.getSlayerData(SlayerData.Slayer.VOIDGLOOM_SERAPH)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND, slayerData.getSlayerData(SlayerData.Slayer.RIFTSTALKER_BLOODFIEND)));
+ slayers.add(new SlayerWidget(SlayerData.Slayer.INFERNO_DEMONLORD, slayerData.getSlayerData(SlayerData.Slayer.INFERNO_DEMONLORD)));
int i = 0;
for (var slayer : slayers) {
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/widgets/BarWidget.java
index 35369ff6..4873815e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/widgets/BarWidget.java
@@ -1,4 +1,4 @@
-package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
+package de.hysky.skyblocker.skyblock.profileviewer.rework.widgets;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.skyblock.profileviewer.model.PlayerData;
@@ -10,6 +10,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gl.RenderPipelines;
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;
@@ -23,23 +24,29 @@ import java.util.OptionalInt;
import static de.hysky.skyblocker.utils.Formatters.INTEGER_NUMBERS;
import static de.hysky.skyblocker.utils.Formatters.SHORT_INTEGER_NUMBERS;
-final class SkillWidget implements ProfileViewerWidget {
+public final class BarWidget implements ProfileViewerWidget {
private static final Identifier ICON_DATA_TEXTURE = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/profile_viewer/icon_data_widget.png");
private static final Identifier BAR_FILL = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_fill");
private static final Identifier BAR_BACK = Identifier.of(SkyblockerMod.NAMESPACE, "bars/bar_back");
private final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
- private final PlayerData.Skill skill;
+ private final String name;
+ private final ItemStack icon;
private final LevelFinder.LevelInfo levelInfo;
+ private final OptionalInt levelCap;
private final OptionalInt softSkillCap;
- SkillWidget(
- PlayerData.Skill skill,
+ public BarWidget(
+ String name,
+ ItemStack icon,
LevelFinder.LevelInfo levelInfo,
+ OptionalInt levelCap,
OptionalInt softSkillCap
) {
- this.skill = skill;
+ this.name = name;
+ this.icon = icon;
this.levelInfo = levelInfo;
+ this.levelCap = levelCap;
this.softSkillCap = softSkillCap;
}
@@ -50,10 +57,10 @@ 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 + 5);
- drawContext.drawText(textRenderer, skill.getName() + " " + levelInfo.level, x + 31, y + 4, -1, false);
+ drawContext.drawItem(icon, x + 3, y + 5);
+ drawContext.drawText(textRenderer, name + " " + levelInfo.level, x + 31, y + 4, -1, false);
Color fillColor = Color.GREEN;
- var skillCap = NEURepoManager.getConstants().getLeveling().getMaximumLevels().get(skill.name().toLowerCase(Locale.ROOT));
+ var skillCap = levelCap.isPresent() ? levelCap.getAsInt() : NEURepoManager.getConstants().getLeveling().getMaximumLevels().getOrDefault(name.toLowerCase(Locale.ROOT), 50);
if (softSkillCap.isPresent() && levelInfo.level > softSkillCap.getAsInt())
fillColor = Color.YELLOW;
if (levelInfo.level >= skillCap)
@@ -64,7 +71,7 @@ final class SkillWidget implements ProfileViewerWidget {
// TODO: add helper for hover selection
if (mouseX > x + 30 && mouseX < x + 105 && mouseY > y + 14 && mouseY < y + 21) {
List<Text> tooltipText = new ArrayList<>();
- tooltipText.add(Text.literal(skill.getName() + " " + levelInfo.level).formatted(Formatting.GREEN));
+ tooltipText.add(Text.literal(name + " " + levelInfo.level).formatted(Formatting.GREEN));
if (levelInfo.level < skillCap) {
tooltipText.add(Text.literal("Progress to Level " + (levelInfo.level + 1) + ":").formatted(Formatting.GRAY));
tooltipText.add(Text.literal("")
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/TextWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/widgets/TextWidget.java
index 91fe329b..819ca7b9 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/TextWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/widgets/TextWidget.java
@@ -1,5 +1,6 @@
-package de.hysky.skyblocker.skyblock.profileviewer.rework;
+package de.hysky.skyblocker.skyblock.profileviewer.rework.widgets;
+import de.hysky.skyblocker.skyblock.profileviewer.rework.ProfileViewerWidget;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;