diff options
| author | Jacob <admin@kath.lol> | 2025-08-01 20:22:16 +0800 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-08-01 15:34:27 +0200 |
| commit | 3ec56dfbde5701489921ae759fa10c5349db0ceb (patch) | |
| tree | 7fd6f1ee9512097f080537471022f5064dc84867 /src/main/java | |
| parent | 501a9a33e78b6e9f98a004dfed933bc38c234eb5 (diff) | |
| download | Skyblocker-3ec56dfbde5701489921ae759fa10c5349db0ceb.tar.gz Skyblocker-3ec56dfbde5701489921ae759fa10c5349db0ceb.tar.bz2 Skyblocker-3ec56dfbde5701489921ae759fa10c5349db0ceb.zip | |
refactor some level widgets into bar widget
Diffstat (limited to 'src/main/java')
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; |
