diff --git a/build.xml b/build.xml
index 6d64d40..43538b7 100644
--- a/build.xml
+++ b/build.xml
@@ -69,6 +69,7 @@
+
diff --git a/src/micropolisj/engine/Micropolis.java b/src/micropolisj/engine/Micropolis.java
index cd3e866..91d530f 100644
--- a/src/micropolisj/engine/Micropolis.java
+++ b/src/micropolisj/engine/Micropolis.java
@@ -2145,6 +2145,8 @@ public class Micropolis
void loadMap_v2(XMLStreamReader in)
throws XMLStreamException
{
+ Map tileUpgradeMap = Tiles.loadTileUpgradeMap();
+
ArrayList< char [] > mapList = new ArrayList< char[] >();
while (in.next() != XMLStreamConstants.END_ELEMENT) {
if (!in.isStartElement()) {
@@ -2167,8 +2169,13 @@ public class Micropolis
char[] row = new char[tmp.size()];
for (int i = 0; i < row.length; i++) {
String [] s_parts = tmp.get(i).split(":");
+ String tileName = s_parts[0];
- TileSpec t = Tiles.load(s_parts[0]);
+ while (tileUpgradeMap.containsKey(tileName)) {
+ tileName = tileUpgradeMap.get(tileName);
+ }
+
+ TileSpec t = Tiles.load(tileName);
if (t == null) {
throw new XMLStreamException(
"Unrecognized tile '"+s_parts[0]+"' at map coordinates ("+i+","+mapList.size()+")",
diff --git a/src/micropolisj/engine/Tiles.java b/src/micropolisj/engine/Tiles.java
index 5482713..ed964e4 100644
--- a/src/micropolisj/engine/Tiles.java
+++ b/src/micropolisj/engine/Tiles.java
@@ -30,6 +30,32 @@ public class Tiles
}
}
+ static final String TILE_ALIASES = "/tiles/aliases.txt";
+ static Map loadTileUpgradeMap()
+ {
+ try {
+ Properties p = new Properties();
+ p.load(
+ new InputStreamReader(
+ Tiles.class.getResourceAsStream(TILE_ALIASES),
+ UTF8
+ )
+ );
+
+ HashMap rv = new HashMap();
+ for (Map.Entry