More bug fixes in Requirement management for Key and Replace areas.

Much better handling of the old school form, and smooth, automatic
transitionning from old school to new school, but only when necessary!
This commit is contained in:
Zukero
2017-08-18 17:22:06 +02:00
parent 6cb0941ca6
commit 33cbd059ec
3 changed files with 73 additions and 16 deletions

View File

@@ -20,7 +20,7 @@ public class KeyArea extends MapObject {
String requireId = obj.getProperties().getProperty("requireId"); String requireId = obj.getProperties().getProperty("requireId");
String requireValue = obj.getProperties().getProperty("requireValue"); String requireValue = obj.getProperties().getProperty("requireValue");
oldSchoolRequirement = false; oldSchoolRequirement = false;
if (requireId == null) { if (requireType == null) {
String[] fields = obj.getName().split(":"); String[] fields = obj.getName().split(":");
if (fields.length == 2) { if (fields.length == 2) {
requireType = Requirement.RequirementType.questProgress.toString(); requireType = Requirement.RequirementType.questProgress.toString();
@@ -76,7 +76,7 @@ public class KeyArea extends MapObject {
} }
if (requirement != null) { if (requirement != null) {
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) { if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
tmxObject.setName(requirement.required_obj_id+":"+Integer.toString(requirement.required_value)); tmxObject.setName(requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value)));
} else { } else {
if (requirement.type != null) { if (requirement.type != null) {
tmxObject.getProperties().setProperty("requireType", requirement.type.toString()); tmxObject.getProperties().setProperty("requireType", requirement.type.toString());
@@ -98,7 +98,7 @@ public class KeyArea extends MapObject {
public void updateNameFromRequirementChange() { public void updateNameFromRequirementChange() {
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) { if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
name = requirement.required_obj_id+":"+Integer.toString(requirement.required_value); name = requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value));
} else if (oldSchoolRequirement) { } else if (oldSchoolRequirement) {
int i = 0; int i = 0;
String futureName = requirement.type.toString() + "#" + Integer.toString(i); String futureName = requirement.type.toString() + "#" + Integer.toString(i);

View File

@@ -20,7 +20,7 @@ public class ReplaceArea extends MapObject {
String requireType = obj.getProperties().getProperty("requireType"); String requireType = obj.getProperties().getProperty("requireType");
String requireId = obj.getProperties().getProperty("requireId"); String requireId = obj.getProperties().getProperty("requireId");
String requireValue = obj.getProperties().getProperty("requireValue"); String requireValue = obj.getProperties().getProperty("requireValue");
if (requireId == null) { if (requireType == null) {
String[] fields = obj.getName().split(":"); String[] fields = obj.getName().split(":");
if (fields.length == 2) { if (fields.length == 2) {
requireType = Requirement.RequirementType.questProgress.toString(); requireType = Requirement.RequirementType.questProgress.toString();
@@ -91,7 +91,7 @@ public class ReplaceArea extends MapObject {
} }
if (requirement != null) { if (requirement != null) {
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) { if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
tmxObject.setName(requirement.required_obj_id+":"+Integer.toString(requirement.required_value)); tmxObject.setName(requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value)));
} else { } else {
tmxObject.getProperties().setProperty("requireType", requirement.type.toString()); tmxObject.getProperties().setProperty("requireType", requirement.type.toString());
if (requirement.required_obj != null) { if (requirement.required_obj != null) {
@@ -112,7 +112,7 @@ public class ReplaceArea extends MapObject {
//Don't use yet ! //Don't use yet !
public void updateNameFromRequirementChange() { public void updateNameFromRequirementChange() {
if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) { if (oldSchoolRequirement && Requirement.RequirementType.questProgress.equals(requirement.type) && (requirement.negated == null || !requirement.negated)) {
name = requirement.required_obj_id+":"+Integer.toString(requirement.required_value); name = requirement.required_obj_id+":"+((requirement.required_value == null) ? "" : Integer.toString(requirement.required_value));
} else if (oldSchoolRequirement) { } else if (oldSchoolRequirement) {
int i = 0; int i = 0;
String futureName = requirement.type.toString() + "#" + Integer.toString(i); String futureName = requirement.type.toString() + "#" + Integer.toString(i);

View File

@@ -1813,6 +1813,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
} }
private int skipAreaFieldEvents = 0;
public class MapFieldUpdater implements FieldUpdateListener { public class MapFieldUpdater implements FieldUpdateListener {
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -1848,8 +1849,22 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
tmxViewer.revalidate(); tmxViewer.revalidate();
tmxViewer.repaint(); tmxViewer.repaint();
} else if (source == areaField) { } else if (source == areaField) {
selectedMapObject.name = (String) value; if (skipAreaFieldEvents > 0) skipAreaFieldEvents--;
groupObjectsListModel.objectChanged(selectedMapObject); else {
selectedMapObject.name = (String) value;
if (selectedMapObject instanceof KeyArea) {
KeyArea area = (KeyArea) selectedMapObject;
if (area.oldSchoolRequirement) {
area.oldSchoolRequirement = false;
}
} else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject;
if (area.oldSchoolRequirement) {
area.oldSchoolRequirement = false;
}
}
groupObjectsListModel.objectChanged(selectedMapObject);
}
} else if (source == spawngroupField) { } else if (source == spawngroupField) {
if (selectedMapObject instanceof SpawnArea) { if (selectedMapObject instanceof SpawnArea) {
SpawnArea area = (SpawnArea)selectedMapObject; SpawnArea area = (SpawnArea)selectedMapObject;
@@ -1973,12 +1988,20 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
KeyArea area = (KeyArea) selectedMapObject; KeyArea area = (KeyArea) selectedMapObject;
area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem()); area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem());
updateRequirementParamsPane(requirementParamsPane, area.requirement, this); updateRequirementParamsPane(requirementParamsPane, area.requirement, this);
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} else if (selectedMapObject instanceof ReplaceArea) { } else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject; ReplaceArea area = (ReplaceArea) selectedMapObject;
area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem()); area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem());
updateRequirementParamsPane(requirementParamsPane, area.requirement, this); updateRequirementParamsPane(requirementParamsPane, area.requirement, this);
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} }
} else if (source == requirementObj) { } else if (source == requirementObj) {
if (selectedMapObject instanceof KeyArea) { if (selectedMapObject instanceof KeyArea) {
@@ -1989,7 +2012,11 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
} else { } else {
area.requirement.required_obj_id = null; area.requirement.required_obj_id = null;
} }
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} else if (selectedMapObject instanceof ReplaceArea) { } else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject; ReplaceArea area = (ReplaceArea) selectedMapObject;
area.requirement.required_obj = (GameDataElement) value; area.requirement.required_obj = (GameDataElement) value;
@@ -1998,17 +2025,31 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
} else { } else {
area.requirement.required_obj_id = null; area.requirement.required_obj_id = null;
} }
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} }
} else if (source == requirementObjId) { } else if (source == requirementObjId) {
if (selectedMapObject instanceof KeyArea) { if (selectedMapObject instanceof KeyArea) {
KeyArea area = (KeyArea) selectedMapObject; KeyArea area = (KeyArea) selectedMapObject;
area.requirement.required_obj_id = (String) value; area.requirement.required_obj_id = (String) value;
area.requirement.required_obj = null; area.requirement.required_obj = null;
if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} else if (selectedMapObject instanceof ReplaceArea) { } else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject; ReplaceArea area = (ReplaceArea) selectedMapObject;
area.requirement.required_obj_id = (String) value; area.requirement.required_obj_id = (String) value;
area.requirement.required_obj = null; area.requirement.required_obj = null;
if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} }
} else if (source == requirementValue) { } else if (source == requirementValue) {
if (selectedMapObject instanceof KeyArea) { if (selectedMapObject instanceof KeyArea) {
@@ -2027,7 +2068,11 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
stage = quest.getStage(area.requirement.required_value); stage = quest.getStage(area.requirement.required_value);
if (stage != null) stage.addBacklink(map); if (stage != null) stage.addBacklink(map);
} }
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} else if (selectedMapObject instanceof ReplaceArea) { } else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject; ReplaceArea area = (ReplaceArea) selectedMapObject;
Quest quest = null; Quest quest = null;
@@ -2044,17 +2089,29 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
stage = quest.getStage(area.requirement.required_value); stage = quest.getStage(area.requirement.required_value);
if (stage != null) stage.addBacklink(map); if (stage != null) stage.addBacklink(map);
} }
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} }
} else if (source == requirementNegated) { } else if (source == requirementNegated) {
if (selectedMapObject instanceof KeyArea) { if (selectedMapObject instanceof KeyArea) {
KeyArea area = (KeyArea) selectedMapObject; KeyArea area = (KeyArea) selectedMapObject;
area.requirement.negated = (Boolean) value; area.requirement.negated = (Boolean) value;
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} else if (selectedMapObject instanceof ReplaceArea) { } else if (selectedMapObject instanceof ReplaceArea) {
ReplaceArea area = (ReplaceArea) selectedMapObject; ReplaceArea area = (ReplaceArea) selectedMapObject;
area.requirement.negated = (Boolean) value; area.requirement.negated = (Boolean) value;
if (area.oldSchoolRequirement) area.updateNameFromRequirementChange(); if (area.oldSchoolRequirement) {
area.updateNameFromRequirementChange();
skipAreaFieldEvents+=2;
areaField.setText(area.name);
}
} }
} else if (source == sourceLayer) { } else if (source == sourceLayer) {
selectedReplacement.sourceLayer = (String)value; selectedReplacement.sourceLayer = (String)value;