From 78eebbd5072a2a89a59056fff90c29b4d0862029 Mon Sep 17 00:00:00 2001 From: Meduris Date: Mon, 4 Aug 2025 22:50:28 +0200 Subject: [PATCH] only save once when checking/unchecking all visible markers --- src/main/java/speiger/src/data/Registry.java | 13 +++++++++++-- src/main/java/speiger/src/ui/MapPanel.java | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) 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