diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/KeyArea.java b/src/com/gpl/rpg/atcontentstudio/model/maps/KeyArea.java index 6027745..ed3aa2e 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/KeyArea.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/KeyArea.java @@ -20,7 +20,7 @@ public class KeyArea extends MapObject { String requireId = obj.getProperties().getProperty("requireId"); String requireValue = obj.getProperties().getProperty("requireValue"); oldSchoolRequirement = false; - if (requireId == null) { + if (requireType == null) { String[] fields = obj.getName().split(":"); if (fields.length == 2) { requireType = Requirement.RequirementType.questProgress.toString(); @@ -76,7 +76,7 @@ public class KeyArea extends MapObject { } if (requirement != null) { 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 { if (requirement.type != null) { tmxObject.getProperties().setProperty("requireType", requirement.type.toString()); @@ -98,7 +98,7 @@ public class KeyArea extends MapObject { public void updateNameFromRequirementChange() { 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) { int i = 0; String futureName = requirement.type.toString() + "#" + Integer.toString(i); diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/ReplaceArea.java b/src/com/gpl/rpg/atcontentstudio/model/maps/ReplaceArea.java index 81e963e..34e0ef7 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/ReplaceArea.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/ReplaceArea.java @@ -20,7 +20,7 @@ public class ReplaceArea extends MapObject { String requireType = obj.getProperties().getProperty("requireType"); String requireId = obj.getProperties().getProperty("requireId"); String requireValue = obj.getProperties().getProperty("requireValue"); - if (requireId == null) { + if (requireType == null) { String[] fields = obj.getName().split(":"); if (fields.length == 2) { requireType = Requirement.RequirementType.questProgress.toString(); @@ -91,7 +91,7 @@ public class ReplaceArea extends MapObject { } if (requirement != null) { 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 { tmxObject.getProperties().setProperty("requireType", requirement.type.toString()); if (requirement.required_obj != null) { @@ -112,7 +112,7 @@ public class ReplaceArea extends MapObject { //Don't use yet ! public void updateNameFromRequirementChange() { 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) { int i = 0; String futureName = requirement.type.toString() + "#" + Integer.toString(i); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java index 35d245c..2aa5ac4 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java @@ -1813,6 +1813,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } + private int skipAreaFieldEvents = 0; public class MapFieldUpdater implements FieldUpdateListener { @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -1848,8 +1849,22 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe tmxViewer.revalidate(); tmxViewer.repaint(); } else if (source == areaField) { - selectedMapObject.name = (String) value; - groupObjectsListModel.objectChanged(selectedMapObject); + if (skipAreaFieldEvents > 0) skipAreaFieldEvents--; + 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) { if (selectedMapObject instanceof SpawnArea) { SpawnArea area = (SpawnArea)selectedMapObject; @@ -1973,12 +1988,20 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe KeyArea area = (KeyArea) selectedMapObject; area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem()); 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) { ReplaceArea area = (ReplaceArea) selectedMapObject; area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem()); 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) { if (selectedMapObject instanceof KeyArea) { @@ -1989,7 +2012,11 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } else { 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) { ReplaceArea area = (ReplaceArea) selectedMapObject; area.requirement.required_obj = (GameDataElement) value; @@ -1998,17 +2025,31 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } else { 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) { if (selectedMapObject instanceof KeyArea) { KeyArea area = (KeyArea) selectedMapObject; area.requirement.required_obj_id = (String) value; area.requirement.required_obj = null; + if (area.oldSchoolRequirement) { + area.updateNameFromRequirementChange(); + skipAreaFieldEvents+=2; + areaField.setText(area.name); + } } else if (selectedMapObject instanceof ReplaceArea) { ReplaceArea area = (ReplaceArea) selectedMapObject; area.requirement.required_obj_id = (String) value; area.requirement.required_obj = null; + if (area.oldSchoolRequirement) { + area.updateNameFromRequirementChange(); + skipAreaFieldEvents+=2; + areaField.setText(area.name); + } } } else if (source == requirementValue) { if (selectedMapObject instanceof KeyArea) { @@ -2027,7 +2068,11 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe stage = quest.getStage(area.requirement.required_value); 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) { ReplaceArea area = (ReplaceArea) selectedMapObject; Quest quest = null; @@ -2044,17 +2089,29 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe stage = quest.getStage(area.requirement.required_value); 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) { if (selectedMapObject instanceof KeyArea) { KeyArea area = (KeyArea) selectedMapObject; 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) { ReplaceArea area = (ReplaceArea) selectedMapObject; 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) { selectedReplacement.sourceLayer = (String)value;