Compare commits

...

4 Commits

Author SHA1 Message Date
Zukero
5d802ed0e3 v0.6.6 released. 2017-08-18 22:19:29 +02:00
Zukero
33cbd059ec 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!
2017-08-18 17:22:06 +02:00
Zukero
6cb0941ca6 Replace areas can now use any type of requirement.
Many bug fix in Key Areas and Replace Areas, especially for the
requirements management.
2017-08-18 16:20:25 +02:00
Zukero
cfb38c33d6 Fixed bug preventing Quests with no quest stages from loading. 2017-08-18 11:51:48 +02:00
9 changed files with 95 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?> <?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
<jardesc> <jardesc>
<jar path="ATCS/ATCS_v0.6.5.jar"/> <jar path="ATCS/ATCS_v0.6.6.jar"/>
<options buildIfNeeded="true" compress="true" descriptionLocation="/ATCS/ATCS_JAR.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/> <options buildIfNeeded="true" compress="true" descriptionLocation="/ATCS/ATCS_JAR.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
<storedRefactorings deprecationInfo="true" structuralOnly="false"/> <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
<selectedProjects/> <selectedProjects/>

View File

@@ -1 +1 @@
v0.6.5 v0.6.6

View File

@@ -1,6 +1,6 @@
!include MUI2.nsh !include MUI2.nsh
!define VERSION "0.6.5" !define VERSION "0.6.6"
!define TRAINER_VERSION "0.1.4" !define TRAINER_VERSION "0.1.4"
!define JAVA_BIN "javaw" !define JAVA_BIN "javaw"

View File

@@ -38,7 +38,7 @@ import prefuse.data.expression.parser.ExpressionParser;
public class ATContentStudio { public class ATContentStudio {
public static final String APP_NAME = "Andor's Trail Content Studio"; public static final String APP_NAME = "Andor's Trail Content Studio";
public static final String APP_VERSION = "v0.6.5"; public static final String APP_VERSION = "v0.6.6";
public static final String CHECK_UPDATE_URL = "https://andorstrail.com/static/ATCS_latest"; public static final String CHECK_UPDATE_URL = "https://andorstrail.com/static/ATCS_latest";
public static final String DOWNLOAD_URL = "https://andorstrail.com/viewtopic.php?f=6&t=4806"; public static final String DOWNLOAD_URL = "https://andorstrail.com/viewtopic.php?f=6&t=4806";

View File

@@ -214,6 +214,9 @@ public class ActorCondition extends JSONElement {
} }
if (this.icon_id != null) { if (this.icon_id != null) {
String spritesheetId = this.icon_id.split(":")[0]; String spritesheetId = this.icon_id.split(":")[0];
if (getProject().getSpritesheet(spritesheetId) == null) {
System.out.println(this.id);
}
getProject().getSpritesheet(spritesheetId).addBacklink(this); getProject().getSpritesheet(spritesheetId).addBacklink(this);
} }

View File

@@ -99,8 +99,8 @@ public class Quest extends JSONElement {
public void parse(Map questJson) { public void parse(Map questJson) {
this.visible_in_log = JSONElement.getInteger((Number) questJson.get("showInLog")); this.visible_in_log = JSONElement.getInteger((Number) questJson.get("showInLog"));
List questStagesJson = (List) questJson.get("stages"); List questStagesJson = (List) questJson.get("stages");
this.stages = new ArrayList<QuestStage>();
if (questStagesJson != null && !questStagesJson.isEmpty()) { if (questStagesJson != null && !questStagesJson.isEmpty()) {
this.stages = new ArrayList<QuestStage>();
for (Object questStageJsonObj : questStagesJson) { for (Object questStageJsonObj : questStagesJson) {
Map questStageJson = (Map)questStageJsonObj; Map questStageJson = (Map)questStageJsonObj;
QuestStage questStage = new QuestStage(this); QuestStage questStage = new QuestStage(this);

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());
@@ -89,13 +89,16 @@ public class KeyArea extends MapObject {
if (requirement.required_value != null) { if (requirement.required_value != null) {
tmxObject.getProperties().setProperty("requireValue", requirement.required_value.toString()); tmxObject.getProperties().setProperty("requireValue", requirement.required_value.toString());
} }
if (requirement.negated != null) {
tmxObject.getProperties().setProperty("requireNegation", Boolean.toString(requirement.negated));
}
} }
} }
} }
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

@@ -17,13 +17,13 @@ public class ReplaceArea extends MapObject {
public List<ReplaceArea.Replacement> replacements = null; public List<ReplaceArea.Replacement> replacements = null;
public ReplaceArea(tiled.core.MapObject obj) { public ReplaceArea(tiled.core.MapObject obj) {
// 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();
requireValue = fields[1]; requireValue = fields[1];
requireId = fields[0]; requireId = fields[0];
oldSchoolRequirement = true; oldSchoolRequirement = true;
@@ -34,9 +34,7 @@ public class ReplaceArea extends MapObject {
}*/ }*/
} }
requirement = new Requirement(); requirement = new Requirement();
//Replace areas only support questProgress requirements ATM if (requireType != null) requirement.type = Requirement.RequirementType.valueOf(requireType);
//requirement.type = Requirement.RequirementType.valueOf(requireType);
requirement.type = Requirement.RequirementType.questProgress;
requirement.required_obj_id = requireId; requirement.required_obj_id = requireId;
if (requireValue != null) requirement.required_value = Integer.parseInt(requireValue); if (requireValue != null) requirement.required_value = Integer.parseInt(requireValue);
requirement.state = GameDataElement.State.parsed; requirement.state = GameDataElement.State.parsed;
@@ -93,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) {
@@ -104,6 +102,9 @@ public class ReplaceArea extends MapObject {
if (requirement.required_value != null) { if (requirement.required_value != null) {
tmxObject.getProperties().setProperty("requireValue", requirement.required_value.toString()); tmxObject.getProperties().setProperty("requireValue", requirement.required_value.toString());
} }
if (requirement.negated != null) {
tmxObject.getProperties().setProperty("requireNegation", Boolean.toString(requirement.negated));
}
} }
} }
} }
@@ -111,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

@@ -563,9 +563,8 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe
}); });
pane.add(tACPane, JideBoxLayout.FIX); pane.add(tACPane, JideBoxLayout.FIX);
} else if (selected instanceof ReplaceArea) { } else if (selected instanceof ReplaceArea) {
//Replace areas only use questProgress requirements ATM
//requirementTypeCombo = addEnumValueBox(pane, "Requirement type: ", Requirement.RequirementType.values(), ((ReplaceArea)selected).requirement.type, ((TMXMap)target).writable, listener);
areaField = addTextField(pane, "Area ID: ", ((ReplaceArea)selected).name, ((TMXMap)target).writable, listener); areaField = addTextField(pane, "Area ID: ", ((ReplaceArea)selected).name, ((TMXMap)target).writable, listener);
requirementTypeCombo = addEnumValueBox(pane, "Requirement type: ", Requirement.RequirementType.values(), ((ReplaceArea)selected).requirement.type, ((TMXMap)target).writable, listener);
requirementParamsPane = new JPanel(); requirementParamsPane = new JPanel();
requirementParamsPane.setLayout(new JideBoxLayout(requirementParamsPane, JideBoxLayout.PAGE_AXIS, 6)); requirementParamsPane.setLayout(new JideBoxLayout(requirementParamsPane, JideBoxLayout.PAGE_AXIS, 6));
pane.add(requirementParamsPane, JideBoxLayout.FIX); pane.add(requirementParamsPane, JideBoxLayout.FIX);
@@ -1814,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" })
@@ -1849,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;
@@ -1974,7 +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) {
ReplaceArea area = (ReplaceArea) selectedMapObject;
area.requirement.changeType((Requirement.RequirementType)requirementTypeCombo.getSelectedItem());
updateRequirementParamsPane(requirementParamsPane, area.requirement, this);
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) {
@@ -1985,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;
@@ -1994,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) {
@@ -2023,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;
@@ -2040,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;