dedup link check

This commit is contained in:
OMGeeky
2025-06-01 19:01:35 +02:00
parent 185f168b19
commit 8561415574
10 changed files with 27 additions and 100 deletions

View File

@@ -39,6 +39,22 @@ public abstract class GameDataElement implements ProjectTreeNode, Serializable {
private Map<GameDataElement, Integer> backlinks = new ConcurrentHashMap<GameDataElement, Integer>();
public String id = null;
protected boolean needsToBeLinked(){
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return false;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return false;
}
return true;
}
@Override
public Enumeration<ProjectTreeNode> children() {

View File

@@ -224,17 +224,7 @@ public class ActorCondition extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
if (this.icon_id != null) {
String spritesheetId = this.icon_id.split(":")[0];
if (getProject().getSpritesheet(spritesheetId) == null) {
@@ -250,7 +240,8 @@ public class ActorCondition extends JSONElement {
this.state = State.linked;
}
public static String getStaticDesc() {
return "Actor Conditions";

View File

@@ -206,17 +206,7 @@ public class Dialogue extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
Project proj = getProject();
if (proj == null) {
Notification.addError("Error linking dialogue "+id+". No parent project found.");

View File

@@ -129,17 +129,7 @@ public class Droplist extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
Project proj = getProject();
if (proj == null) {
Notification.addError("Error linking droplist "+id+". No parent project found.");

View File

@@ -206,17 +206,7 @@ public class Item extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
Project proj = getProject();
if (proj == null) {
Notification.addError("Error linking item "+id+". No parent project found.");

View File

@@ -171,17 +171,7 @@ public class ItemCategory extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
//Nothing to link to :D
this.state = State.linked;

View File

@@ -208,17 +208,7 @@ public class NPC extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
Project proj = getProject();
if (proj == null) {
Notification.addError("Error linking item "+id+". No parent project found.");

View File

@@ -113,17 +113,7 @@ public class Quest extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
for (QuestStage stage : stages) {
stage.link();

View File

@@ -59,17 +59,7 @@ public class QuestStage extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
//Nothing to link to :D
this.state = State.linked;

View File

@@ -153,17 +153,7 @@ public class Requirement extends JSONElement {
@Override
public void link() {
if (this.state == State.created || this.state == State.modified || this.state == State.saved) {
//This type of state is unrelated to parsing/linking.
return;
}
if (this.state == State.init) {
//Not parsed yet.
this.parse();
} else if (this.state == State.linked) {
//Already linked.
return;
}
if (!this.needsToBeLinked()) return;
Project proj = getProject();
if (proj == null) {
Notification.addError("Error linking requirement "+getDesc()+". No parent project found.");