diff options
author | olim <bobq4582@gmail.com> | 2024-05-28 16:10:17 +0100 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-05-28 19:57:20 +0100 |
commit | 3999a2a3afeccf217719c2a5291508ceba79d237 (patch) | |
tree | 74139c543e1af0cd578c56c2abee2f6ec631f1c2 /src/main/java/de/hysky | |
parent | 1811e0fb488f693d40b0be4100b29969e154bb0a (diff) | |
download | Skyblocker-3999a2a3afeccf217719c2a5291508ceba79d237.tar.gz Skyblocker-3999a2a3afeccf217719c2a5291508ceba79d237.tar.bz2 Skyblocker-3999a2a3afeccf217719c2a5291508ceba79d237.zip |
front load pets
when searching the ah make pets show ahead of skins ect when they are a likly match
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java | 19 |
1 files changed, 18 insertions, 1 deletions
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 365d7007..2ddca077 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java @@ -229,7 +229,24 @@ public class SearchOverManager { //update the suggestion values int totalSuggestions = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.maxSuggestions; if (newValue.isBlank() || totalSuggestions == 0) return; //do not search for empty value - suggestionsArray = (isAuction ? auctionItems : bazaarItems).stream().filter(item -> item.toLowerCase().contains(search.toLowerCase())).limit(totalSuggestions).toArray(String[]::new); + suggestionsArray = (isAuction ? auctionItems : bazaarItems).stream().sorted(Comparator.comparing(SearchOverManager::shouldFrontLoad, Comparator.reverseOrder())).filter(item -> item.toLowerCase().contains(search.toLowerCase())).limit(totalSuggestions).toArray(String[]::new); + } + + /** + * determines if a value should be moved to the front of the search + * @param name name of the suggested item + * @return if the value should be at the front of the search queue + */ + private static boolean shouldFrontLoad(String name) { + if (!isAuction) { + return false; + } + //do nothing to non pets + if (!auctionPets.contains(name.toLowerCase())) { + return false; + } + //only front load pets when there is enough of the pet typed, so it does not spoil searching for other items + return (double) search.length() / name.length() > 0.5; } protected static void updateDungeonStars(String newValue) { |