MapObject & MonsterSpawnArea now keep track of their Tiled group's name.

This commit is contained in:
Zukero
2013-10-20 22:14:35 +02:00
parent 5daf70e739
commit bddb3e2a8c
3 changed files with 25 additions and 19 deletions

View File

@@ -26,6 +26,7 @@ public final class MapObject {
public final String id; //placeName on this map or phraseID
public final String map;
public final String place;
public final String group;
public final Requirement enteringRequirement;
public final DropList dropList;
public final MapObjectEvaluationType evaluateWhen;
@@ -39,6 +40,7 @@ public final class MapObject {
, final Requirement enteringRequirement
, final DropList dropList
, final MapObjectEvaluationType evaluateWhen
, final String group
) {
this.position = new CoordRect(position);
this.type = type;
@@ -48,24 +50,25 @@ public final class MapObject {
this.enteringRequirement = enteringRequirement;
this.dropList = dropList;
this.evaluateWhen = evaluateWhen;
this.group = group;
}
public static MapObject createMapSignEvent(final CoordRect position, final String phraseID) {
return new MapObject(position, MapObjectType.sign, phraseID, null, null, null, null, MapObjectEvaluationType.whenEntering);
public static MapObject createMapSignEvent(final CoordRect position, final String phraseID, String group) {
return new MapObject(position, MapObjectType.sign, phraseID, null, null, null, null, MapObjectEvaluationType.whenEntering, group);
}
public static MapObject createMapChangeArea(final CoordRect position, final String thisMapTitle, final String destinationMap, final String destinationPlace) {
return new MapObject(position, MapObjectType.newmap, thisMapTitle, destinationMap, destinationPlace, null, null, MapObjectEvaluationType.whenEntering);
public static MapObject createMapChangeArea(final CoordRect position, final String thisMapTitle, final String destinationMap, final String destinationPlace, String group) {
return new MapObject(position, MapObjectType.newmap, thisMapTitle, destinationMap, destinationPlace, null, null, MapObjectEvaluationType.whenEntering, group);
}
public static MapObject createRestArea(final CoordRect position, final String placeId) {
return new MapObject(position, MapObjectType.rest, placeId, null, null, null, null, MapObjectEvaluationType.whenEntering);
public static MapObject createRestArea(final CoordRect position, final String placeId, String group) {
return new MapObject(position, MapObjectType.rest, placeId, null, null, null, null, MapObjectEvaluationType.whenEntering, group);
}
public static MapObject createKeyArea(final CoordRect position, final String phraseID, final Requirement enteringRequirement) {
return new MapObject(position, MapObjectType.keyarea, phraseID, null, null, enteringRequirement, null, MapObjectEvaluationType.whenEntering);
public static MapObject createKeyArea(final CoordRect position, final String phraseID, final Requirement enteringRequirement, String group) {
return new MapObject(position, MapObjectType.keyarea, phraseID, null, null, enteringRequirement, null, MapObjectEvaluationType.whenEntering, group);
}
public static MapObject createContainerArea(final CoordRect position, final DropList dropList) {
return new MapObject(position, MapObjectType.container, null, null, null, null, dropList, MapObjectEvaluationType.whenEntering);
public static MapObject createContainerArea(final CoordRect position, final DropList dropList, String group) {
return new MapObject(position, MapObjectType.container, null, null, null, null, dropList, MapObjectEvaluationType.whenEntering, group);
}
public static MapObject createScriptArea(final CoordRect position, final String phraseID, final MapObjectEvaluationType evaluateWhen) {
return new MapObject(position, MapObjectType.script, phraseID, null, null, null, null, evaluateWhen);
public static MapObject createScriptArea(final CoordRect position, final String phraseID, final MapObjectEvaluationType evaluateWhen, String group) {
return new MapObject(position, MapObjectType.script, phraseID, null, null, null, null, evaluateWhen, group);
}
}

View File

@@ -20,13 +20,15 @@ public final class MonsterSpawnArea {
public final String[] monsterTypeIDs;
public final ArrayList<Monster> monsters = new ArrayList<Monster>();
public final boolean isUnique; // unique == non-respawnable
public final String group;
public MonsterSpawnArea(CoordRect area, Range quantity, Range spawnChance, String[] monsterTypeIDs, boolean isUnique) {
public MonsterSpawnArea(CoordRect area, Range quantity, Range spawnChance, String[] monsterTypeIDs, boolean isUnique, String group) {
this.area = area;
this.quantity = quantity;
this.spawnChance = spawnChance;
this.monsterTypeIDs = monsterTypeIDs;
this.isUnique = isUnique;
this.group = group;
}
public Monster getMonsterAt(final Coord p) { return getMonsterAt(p.x, p.y); }

View File

@@ -65,7 +65,7 @@ public final class TMXMapTranslator {
for (TMXProperty p : object.properties) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) L.log("OPTIMIZE: Map " + m.name + ", sign " + object.name + "@" + topLeft.toString() + " has unrecognized property \"" + p.name + "\".");
}
mapObjects.add(MapObject.createMapSignEvent(position, phraseID));
mapObjects.add(MapObject.createMapSignEvent(position, phraseID, group.name));
} else if (object.type.equalsIgnoreCase("mapchange")) {
String map = null;
String place = null;
@@ -74,7 +74,7 @@ public final class TMXMapTranslator {
else if(p.name.equalsIgnoreCase("place")) place = p.value;
else if(AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) L.log("OPTIMIZE: Map " + m.name + ", mapchange " + object.name + "@" + topLeft.toString() + " has unrecognized property \"" + p.name + "\".");
}
mapObjects.add(MapObject.createMapChangeArea(position, object.name, map, place));
mapObjects.add(MapObject.createMapChangeArea(position, object.name, map, place, group.name));
} else if (object.type.equalsIgnoreCase("spawn")) {
ArrayList<MonsterType> types = monsterTypes.getMonsterTypesFromSpawnGroup(object.name);
int maxQuantity = 1;
@@ -113,6 +113,7 @@ public final class TMXMapTranslator {
,new Range(1000, spawnChance)
,monsterTypeIDs
,isUnique
,group.name
);
spawnAreas.add(area);
} else if (object.type.equalsIgnoreCase("key")) {
@@ -133,13 +134,13 @@ public final class TMXMapTranslator {
L.log("OPTIMIZE: Map " + m.name + ", key " + object.name + "@" + topLeft.toString() + " has unrecognized property \"" + p.name + "\".");
}
}
mapObjects.add(MapObject.createKeyArea(position, phraseID, new Requirement(requireType, requireId, requireValue)));
mapObjects.add(MapObject.createKeyArea(position, phraseID, new Requirement(requireType, requireId, requireValue), group.name));
} else if (object.type.equals("rest")) {
mapObjects.add(MapObject.createRestArea(position, object.name));
mapObjects.add(MapObject.createRestArea(position, object.name, group.name));
} else if (object.type.equals("container")) {
DropList dropList = dropLists.getDropList(object.name);
if (dropList == null) continue;
mapObjects.add(MapObject.createContainerArea(position, dropList));
mapObjects.add(MapObject.createContainerArea(position, dropList, group.name));
} else if (object.type.equals("replace")) {
// Do nothing. Will be handled when reading map layers instead.
} else if (object.type.equalsIgnoreCase("script")) {
@@ -162,7 +163,7 @@ public final class TMXMapTranslator {
L.log("OPTIMIZE: Map " + m.name + ", script " + object.name + "@" + topLeft.toString() + " has unrecognized property \"" + p.name + "\".");
}
}
mapObjects.add(MapObject.createScriptArea(position, phraseID, evaluateWhen));
mapObjects.add(MapObject.createScriptArea(position, phraseID, evaluateWhen, group.name));
} else if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
L.log("OPTIMIZE: Map " + m.name + ", has unrecognized object type \"" + object.type + "\" for name \"" + object.name + "\".");
}