diff --git a/src/main/java/speiger/src/data/Registry.java b/src/main/java/speiger/src/data/Registry.java index a81fa11..3021e6d 100644 --- a/src/main/java/speiger/src/data/Registry.java +++ b/src/main/java/speiger/src/data/Registry.java @@ -52,6 +52,7 @@ public class Registry { Map collectables = new LinkedHashMap<>(); Set completed = new HashSet<>(); Object syncObj = new Object(); + boolean bulkOperationActive = false; public void load() { parseRegistry("/assets/data/medals.json", CollectableType.MEDAL); @@ -202,14 +203,22 @@ public class Registry { public void markComplete(UUID id) { completed.add(id); - save(); + if (bulkOperationActive) save(); } public void unmarkComplete(UUID id) { completed.remove(id); - save(); + if (bulkOperationActive) save(); } + public void setBulkOperation(boolean bulk) { + bulkOperationActive = bulk; + + if (!bulk) { + save(); + } + } + public boolean isCompleted(UUID id) { return completed.contains(id); } diff --git a/src/main/java/speiger/src/ui/MapPanel.java b/src/main/java/speiger/src/ui/MapPanel.java index 5d2042e..a6b534c 100644 --- a/src/main/java/speiger/src/ui/MapPanel.java +++ b/src/main/java/speiger/src/ui/MapPanel.java @@ -345,7 +345,9 @@ public class MapPanel extends JPanel { } public void setCompletionState(boolean value) { + Registry.INSTANCE.setBulkOperation(true); visibleMarkers.forEach(T -> T.setCompletion(value)); + Registry.INSTANCE.setBulkOperation(false); } @Override