diff options
author | olim <bobq4582@gmail.com> | 2024-05-28 21:45:49 +0100 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-05-28 21:45:49 +0100 |
commit | 67ab56d515f846a25ac80e496eaa53925b56c908 (patch) | |
tree | 9d99fcc350e2fde55e5e55293b862f1b1f81c39f /src/main/java/de/hysky | |
parent | 362d317ad67635205e4bc087ce07dff71b4ddd43 (diff) | |
download | Skyblocker-67ab56d515f846a25ac80e496eaa53925b56c908.tar.gz Skyblocker-67ab56d515f846a25ac80e496eaa53925b56c908.tar.bz2 Skyblocker-67ab56d515f846a25ac80e496eaa53925b56c908.zip |
revamp ui
add background an move stars and pet options to look better hopefully
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java | 98 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java | 11 |
2 files changed, 73 insertions, 36 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java index dba55fa3..0850c80a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java @@ -1,15 +1,13 @@ package de.hysky.skyblocker.skyblock.searchoverlay; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import dev.isxander.yacl3.gui.TooltipButtonWidget; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.SliderWidget; import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.gui.widget.ToggleButtonWidget; import net.minecraft.item.ItemStack; +import net.minecraft.text.MutableText; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -21,11 +19,12 @@ import static de.hysky.skyblocker.skyblock.itemlist.ItemRepository.getItemStack; public class OverlayScreen extends Screen { protected static final Identifier SEARCH_ICON_TEXTURE = new Identifier("icon/search"); + private static final Identifier BACKGROUND_TEXTURE = new Identifier("social_interactions/background"); private static final int rowHeight = 20; private TextFieldWidget searchField; private ButtonWidget finishedButton; private ButtonWidget maxPetButton; - private TextFieldWidget dungeonStarField; + private ButtonWidget dungeonStarButton; private ButtonWidget[] suggestionButtons; private ButtonWidget[] historyButtons; @@ -92,28 +91,20 @@ public class OverlayScreen extends Screen { //max pet level button maxPetButton = ButtonWidget.builder(Text.literal("temp"), a -> { SearchOverManager.maxPetLevel = !SearchOverManager.maxPetLevel; - if (SearchOverManager.maxPetLevel) { - maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ✔")).formatted(Formatting.GREEN)); - } else { - maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ❌")).formatted(Formatting.RED)); - } + updateMaxPetText(); }) - .position(startX + rowWidth, startY) + .tooltip(Tooltip.of(Text.translatable("skyblocker.config.general.searchOverlay.maxPet.@Tooltip"))) + .position(startX, startY - rowHeight - 8) .size(rowWidth / 2, rowHeight).build(); - if (SearchOverManager.maxPetLevel) { - maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ✔")).formatted(Formatting.GREEN)); - } else { - maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ❌")).formatted(Formatting.RED)); - } + updateMaxPetText(); //dungeon star input - this.dungeonStarField = new TextFieldWidget(textRenderer, startX + (int) (rowWidth * 1.25), startY + rowHeight, rowWidth / 4, rowHeight, Text.literal("")); - if (SearchOverManager.dungeonStars > 0) { - dungeonStarField.setText(String.valueOf(SearchOverManager.dungeonStars)); - } - dungeonStarField.setMaxLength(2); - dungeonStarField.setTooltip(Tooltip.of(Text.translatable("skyblocker.config.general.searchOverlay.starsTooltip"))); - dungeonStarField.setChangedListener(SearchOverManager::updateDungeonStars); + dungeonStarButton = ButtonWidget.builder(Text.literal("✪"), a -> updateStars()) + .tooltip(Tooltip.of(Text.translatable("skyblocker.config.general.searchOverlay.starsTooltip"))) + .position(startX + (int) (rowWidth * 0.5), startY - rowHeight - 8) + .size(rowWidth / 2, rowHeight).build(); + + updateStars(); } //add drawables in order to make tab navigation sensible @@ -130,7 +121,8 @@ public class OverlayScreen extends Screen { if (SearchOverManager.isAuction) { addDrawableChild(maxPetButton); - addDrawableChild(dungeonStarField); + addDrawableChild(dungeonStarButton); + } //focus the search box @@ -138,6 +130,63 @@ public class OverlayScreen extends Screen { } /** + * finds if the mouse is clicked on the dungeon star button and if so works out amount of stars to set + * + * @param mouseX the X coordinate of the mouse + * @param mouseY the Y coordinate of the mouse + * @param button the mouse button number + * @return super + */ + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (SearchOverManager.isAuction && dungeonStarButton.isHovered() && client != null) { + double actualTextWidth = client.textRenderer.getWidth(dungeonStarButton.getMessage()); + double textOffset = (dungeonStarButton.getWidth() - actualTextWidth) / 2; + double offset = mouseX - (dungeonStarButton.getX() + textOffset); + int starCount = (int) ((offset / actualTextWidth) * 10); + starCount = Math.clamp(0, starCount + 1, 10); + //if same as old value set stars to 0 else set to selected amount + if (starCount == SearchOverManager.dungeonStars) { + SearchOverManager.dungeonStars = 0; + } else { + SearchOverManager.dungeonStars = starCount; + } + } + + return super.mouseClicked(mouseX, mouseY, button); + } + + private void updateMaxPetText() { + if (SearchOverManager.maxPetLevel) { + maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ✔")).formatted(Formatting.GREEN)); + } else { + maxPetButton.setMessage(Text.translatable("skyblocker.config.general.searchOverlay.maxPet").append(Text.literal(" ❌")).formatted(Formatting.RED)); + } + } + + private void updateStars() { + MutableText stars = Text.empty(); + for (int i = 0; i < SearchOverManager.dungeonStars; i++) { + stars.append(Text.literal("✪").formatted(Formatting.GREEN)); + } + for (int i = SearchOverManager.dungeonStars; i < 10; i++) { + stars.append(Text.literal("✪")); + } + dungeonStarButton.setMessage(stars); + } + + @Override + public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) { + super.renderBackground(context, mouseX, mouseY, delta); + //find max height + int maxHeight = rowHeight * (1 + suggestionButtons.length + historyButtons.length); + if (historyButtons.length > 0) { //add space for history label if it could exist + maxHeight += (int) (rowHeight * 0.75); + } + context.drawGuiTexture(BACKGROUND_TEXTURE, searchField.getX() - 8, searchField.getY() - 8, (int) (this.width * 0.4) + 16, maxHeight + 16); + } + + /** * Renders the search icon, label for the history and item Stacks for item names */ @Override @@ -149,9 +198,6 @@ public class OverlayScreen extends Screen { if (historyButtons.length > 0 && historyButtons[0] != null) { context.drawText(textRenderer, Text.translatable("skyblocker.config.general.searchOverlay.historyLabel"), historyButtons[0].getX() + renderOffset, historyButtons[0].getY() - rowHeight / 2, 0xFFFFFFFF, true); } - if (SearchOverManager.isAuction) { - context.drawText(textRenderer, Text.translatable("skyblocker.config.general.searchOverlay.starsLabel"), dungeonStarField.getX() - dungeonStarField.getWidth() + renderOffset, dungeonStarField.getY() + rowHeight / 4, 0xFFFFFFFF, true); - } //draw item stacks and tooltip to buttons for (int i = 0; i < suggestionButtons.length; i++) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java index 7f2f17e1..7f31c207 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java @@ -54,7 +54,7 @@ public class SearchOverManager { protected static String search = ""; protected static Boolean maxPetLevel = false; - protected static int dungeonStars = -1; + protected static int dungeonStars = 0; // Use non-final variables and swap them to prevent concurrent modification private static HashSet<String> bazaarItems; @@ -250,15 +250,6 @@ public class SearchOverManager { return (double) search.length() / name.length() > 0.5; } - protected static void updateDungeonStars(String newValue) { - try { - dungeonStars = Math.min(Integer.parseInt(newValue), 10); - } catch (Exception e) { - //not parsable number just set to 0 - dungeonStars = 0; - } - } - /** * Gets the suggestion in the suggestion array at the index * |