Merge pull request 'a few fixes' (#1) from Meduris/Mario-Kart-World-Tracking-Tool:master into master

Reviewed-on: #1
Reviewed-by: Speiger <speiger@noreply.localhost>
This commit is contained in:
Speiger 2025-08-04 23:36:08 +02:00
commit f7f5b1dc74
4 changed files with 28 additions and 6 deletions

2
.gitignore vendored
View File

@ -10,3 +10,5 @@ build
/backup /backup
/output /output
*.zip *.zip
.idea

View File

@ -4,6 +4,8 @@ plugins {
archivesBaseName = "Mario Kart World Tracker" archivesBaseName = "Mario Kart World Tracker"
version = '1.0.1' version = '1.0.1'
var mainClassName = 'speiger.src.ui.MapPanel'
repositories { repositories {
mavenCentral() mavenCentral()
} }
@ -13,7 +15,7 @@ sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = co
jar { jar {
manifest { manifest {
attributes "Main-Class": 'speiger.src.ui.MapPanel' attributes "Main-Class": mainClassName
} }
from { from {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE duplicatesStrategy = DuplicatesStrategy.EXCLUDE
@ -27,7 +29,7 @@ task baseJar(type: Jar) {
exclude('assets/images/images.zip') exclude('assets/images/images.zip')
duplicatesStrategy = DuplicatesStrategy.EXCLUDE duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest { manifest {
attributes "Main-Class": 'speiger.src.ui.MapPanel' attributes "Main-Class": mainClassName
} }
from { from {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE duplicatesStrategy = DuplicatesStrategy.EXCLUDE
@ -35,6 +37,11 @@ task baseJar(type: Jar) {
} }
} }
task run(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass.set(mainClassName)
}
dependencies { dependencies {
implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.google.code.gson:gson:2.8.6'

View File

@ -52,6 +52,7 @@ public class Registry {
Map<UUID, Collectable> collectables = new LinkedHashMap<>(); Map<UUID, Collectable> collectables = new LinkedHashMap<>();
Set<UUID> completed = new HashSet<>(); Set<UUID> completed = new HashSet<>();
Object syncObj = new Object(); Object syncObj = new Object();
boolean bulkOperationActive = false;
public void load() { public void load() {
parseRegistry("/assets/data/medals.json", CollectableType.MEDAL); parseRegistry("/assets/data/medals.json", CollectableType.MEDAL);
@ -202,13 +203,21 @@ public class Registry {
public void markComplete(UUID id) { public void markComplete(UUID id) {
completed.add(id); completed.add(id);
save(); if (bulkOperationActive) save();
} }
public void unmarkComplete(UUID id) { public void unmarkComplete(UUID id) {
completed.remove(id); completed.remove(id);
if (bulkOperationActive) save();
}
public void setBulkOperation(boolean bulk) {
bulkOperationActive = bulk;
if (!bulk) {
save(); save();
} }
}
public boolean isCompleted(UUID id) { public boolean isCompleted(UUID id) {
return completed.contains(id); return completed.contains(id);

View File

@ -345,7 +345,11 @@ public class MapPanel extends JPanel {
} }
public void setCompletionState(boolean value) { public void setCompletionState(boolean value) {
Registry.INSTANCE.setBulkOperation(true);
visibleMarkers.forEach(T -> T.setCompletion(value)); visibleMarkers.forEach(T -> T.setCompletion(value));
Registry.INSTANCE.setBulkOperation(false);
EventQueue.invokeLater(this::repaint);
if(progressUpdate != null) progressUpdate.run();
} }
@Override @Override