diff options
Diffstat (limited to 'src/main/java')
4 files changed, 86 insertions, 5 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index 714229dc..7f945035 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -423,6 +423,15 @@ public class SkyblockerConfig { @SerialEntry public int maxSuggestions = 3; + + @SerialEntry + public int historyLength = 3; + + @SerialEntry + public List<String> bazaarHistory = new ArrayList<>(); + + @SerialEntry + public List<String> auctionHistory = new ArrayList<>(); } public static class TeleportOverlay { diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java index a9b965cf..f4674c2e 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -665,7 +665,14 @@ public class GeneralCategory { .binding(defaults.general.searchOverlay.maxSuggestions, () -> config.general.searchOverlay.maxSuggestions, newValue -> config.general.searchOverlay.maxSuggestions = newValue) - .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5 ).step(1)) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1)) + .build()) + .option(Option.<Integer>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.historyLength")) + .binding(defaults.general.searchOverlay.historyLength, + () -> config.general.searchOverlay.historyLength, + newValue -> config.general.searchOverlay.historyLength = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1)) .build()) .build()) .build(); 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 136edb40..7da23168 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java @@ -20,7 +20,9 @@ public class OverlayScreen extends Screen { private TextFieldWidget searchField; private ButtonWidget finishedButton; private ButtonWidget[] suggestionButtons; - //todo history buttons + private ButtonWidget[] historyButtons; + + public OverlayScreen(Text title) { super(title); @@ -32,7 +34,7 @@ public class OverlayScreen extends Screen { int rowWidth = (int)(this.width * 0.33); int startX = (int)(this.width * 0.5) - rowWidth/2; - int startY = (int)(this.height * 0.5)- (rowHeight * (1+ SkyblockerConfigManager.get().general.searchOverlay.maxSuggestions)) /2; + int startY = (int) ((int)(this.height * 0.5)- (rowHeight * (1+ SkyblockerConfigManager.get().general.searchOverlay.maxSuggestions + 0.75 + SkyblockerConfigManager.get().general.searchOverlay.historyLength)) /2); // Search field this.searchField = new TextFieldWidget(textRenderer, startX, startY, rowWidth - rowHeight, rowHeight, Text.literal("Search...")); @@ -41,12 +43,13 @@ public class OverlayScreen extends Screen { // finish buttons - finishedButton = ButtonWidget.builder(Text.literal("").setStyle(Style.EMPTY.withColor(Formatting.GREEN)), (a) -> { + finishedButton = ButtonWidget.builder(Text.literal("").setStyle(Style.EMPTY.withColor(Formatting.GREEN)), (a) -> { close(); }) .position(startX + rowWidth - rowHeight, startY) .size(rowHeight, rowHeight).build(); // suggested item buttons + int rowOffset = rowHeight; int totalSuggestions = SkyblockerConfigManager.get().general.searchOverlay.maxSuggestions; this.suggestionButtons = new ButtonWidget[totalSuggestions]; for (int i = 0; i < totalSuggestions; i++) { @@ -54,15 +57,39 @@ public class OverlayScreen extends Screen { SearchOverManager.updateSearch(a.getMessage().getString()); close(); }) - .position(startX , startY + rowHeight * (i+1)) + .position(startX , startY + rowOffset) .size(rowWidth, rowHeight).build(); suggestionButtons[i].visible = false; + rowOffset += rowHeight; + } + // history item buttons + rowOffset += (int) (rowHeight * 0.75); + int historyLength = SkyblockerConfigManager.get().general.searchOverlay.historyLength; //todo look different + this.historyButtons = new ButtonWidget[historyLength]; + for (int i = 0; i < historyLength; i++) { + String text = SearchOverManager.getHistory(i); + if (text != null){ + historyButtons[i] = ButtonWidget.builder(Text.literal(text).setStyle(Style.EMPTY), (a) -> { + SearchOverManager.updateSearch(a.getMessage().getString()); + close(); + }) + .position(startX , startY + rowOffset) + .size(rowWidth, rowHeight).build(); + rowOffset += rowHeight; + }else{ + break; + } } addDrawableChild(searchField); for (ButtonWidget suggestion : suggestionButtons){ addDrawableChild(suggestion); } + for (ButtonWidget historyOption : historyButtons){ + if (historyOption != null){ + addDrawableChild(historyOption); + } + } addDrawableChild(finishedButton); } @@ -71,6 +98,10 @@ public class OverlayScreen extends Screen { public void render(DrawContext context, int mouseX, int mouseY, float delta) { super.render(context, mouseX, mouseY, delta); context.drawGuiTexture(SEARCH_ICON_TEXTURE, finishedButton.getX() + 2, finishedButton.getY() + 2, 16, 16); //todo rowHeight -4 + if(historyButtons.length > 0 ){ + context.drawText(textRenderer, "History:", historyButtons[0].getX()+2, historyButtons[0].getY() - 10, 0xFFFFFFFF, true); //todo load form en_us and rowHeight + } + } @Override 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 5846dbf3..e8f78229 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java @@ -107,8 +107,42 @@ public class SearchOverManager { return ""; } } + protected static String getHistory(int index){ + if (IsAuction){ + if (SkyblockerConfigManager.get().general.searchOverlay.auctionHistory.size() >index){ + return SkyblockerConfigManager.get().general.searchOverlay.auctionHistory.get(index); + } + + }else{ + if (SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory.size() >index){ + return SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory.get(index); + } + } + return null; + + } + private static void saveHistory(){ + //save to history + int historyLength = SkyblockerConfigManager.get().general.searchOverlay.historyLength; + if (IsAuction){ + SkyblockerConfigManager.get().general.searchOverlay.auctionHistory.add(0,search); + if (SkyblockerConfigManager.get().general.searchOverlay.auctionHistory.size() >historyLength) { + SkyblockerConfigManager.get().general.searchOverlay.auctionHistory = SkyblockerConfigManager.get().general.searchOverlay.auctionHistory.subList(0, historyLength); + } + }else{ + SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory.add(0,search); + if (SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory.size() >historyLength) { + SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory = SkyblockerConfigManager.get().general.searchOverlay.bazaarHistory.subList(0, historyLength); + } + } + SkyblockerConfigManager.save(); + } protected static void pushSearch() { + //save to history + if (!search.isEmpty()){ + saveHistory(); + } //splits text into 2 lines max = 30 chars StringBuilder line0 = new StringBuilder(); String line1; |