aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java44
1 files changed, 30 insertions, 14 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java
index 3253f08a..3a3aec6d 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/StorageManager.java
@@ -166,6 +166,7 @@ public class StorageManager {
public static class StorageConfig {
public HashMap<String, StoragePage[]> pages = new HashMap<>();
public final HashMap<Integer, Integer> displayToStorageIdMap = new HashMap<>();
+ public final HashMap<Integer, Integer> displayToStorageIdMapRender = new HashMap<>();
}
public StorageConfig storageConfig = new StorageConfig();
@@ -387,6 +388,16 @@ public class StorageManager {
return -1;
}
+ public int getDisplayIdForStorageIdRender(int storageId) {
+ if(storageId < 0) return -1;
+ for(Map.Entry<Integer, Integer> entry : storageConfig.displayToStorageIdMapRender.entrySet()) {
+ if(entry.getValue() == storageId) {
+ return entry.getKey();
+ }
+ }
+ return -1;
+ }
+
public boolean onAnyClick() {
if(onStorageMenu && desiredStoragePage >= 0) {
if(desiredStoragePage < 9) {
@@ -444,7 +455,10 @@ public class StorageManager {
}
} else {
StorageOverlay.getInstance().clearSearch();
+ return;
}
+ StorageOverlay.getInstance().fastRenderCheck();
+
}
public void closeWindowPacket(S2EPacketCloseWindow packet) {
@@ -488,21 +502,22 @@ public class StorageManager {
if(changed) {
synchronized(storageConfig.displayToStorageIdMap) {
storageConfig.displayToStorageIdMap.clear();
+ storageConfig.displayToStorageIdMapRender.clear();
int displayIndex = 0;
for(int i=0; i<storagePresent.length; i++) {
if(storagePresent[i]) {
- if(lastSearch == null || lastSearch.isEmpty()) {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
- } else {
+ storageConfig.displayToStorageIdMap.put(displayIndex, i);
+ if(lastSearch != null && !lastSearch.isEmpty()){
StoragePage page = getPage(i, false);
if(page != null) {
updateSearchForPage(lastSearch, page);
if(page.matchesSearch) {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
}
}
- }
+ } else
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
}
}
}
@@ -527,21 +542,22 @@ public class StorageManager {
if(changed) {
synchronized(storageConfig.displayToStorageIdMap) {
storageConfig.displayToStorageIdMap.clear();
+ storageConfig.displayToStorageIdMapRender.clear();
int displayIndex = 0;
for(int i=0; i<storagePresent.length; i++) {
if(storagePresent[i]) {
- if(lastSearch == null || lastSearch.isEmpty()) {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
- } else {
+ storageConfig.displayToStorageIdMap.put(displayIndex, i);
+ if(lastSearch != null && !lastSearch.isEmpty()){
StoragePage page = getPage(i, false);
if(page != null) {
updateSearchForPage(lastSearch, page);
if(page.matchesSearch) {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
}
}
- }
+ } else
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
}
}
}
@@ -587,8 +603,8 @@ public class StorageManager {
public void searchDisplay(String searchStr) {
if(storagePresent == null) return;
- synchronized(storageConfig.displayToStorageIdMap) {
- storageConfig.displayToStorageIdMap.clear();
+ synchronized(storageConfig.displayToStorageIdMapRender) {
+ storageConfig.displayToStorageIdMapRender.clear();
lastSearch = searchStr;
int sid = searchId.incrementAndGet();
@@ -600,10 +616,10 @@ public class StorageManager {
if(page.rows > 0) {
updateSearchForPage(searchStr, page);
if(page.matchesSearch) {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
}
} else {
- storageConfig.displayToStorageIdMap.put(displayIndex++, i);
+ storageConfig.displayToStorageIdMapRender.put(displayIndex++, i);
page.matchesSearch = true;
page.searchedId = sid;
}