aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-05-28 16:10:17 +0100
committerolim <bobq4582@gmail.com>2024-05-28 19:57:20 +0100
commit3999a2a3afeccf217719c2a5291508ceba79d237 (patch)
tree74139c543e1af0cd578c56c2abee2f6ec631f1c2 /src/main/java/de/hysky
parent1811e0fb488f693d40b0be4100b29969e154bb0a (diff)
downloadSkyblocker-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.java19
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) {