diff --git a/build.xml b/build.xml
index 43538b7..b1ff647 100644
--- a/build.xml
+++ b/build.xml
@@ -49,6 +49,7 @@
fork="true" failonerror="true" dir="graphics" inputstring="">
+
diff --git a/src/micropolisj/build_tool/MakeTiles.java b/src/micropolisj/build_tool/MakeTiles.java
index 4259f1e..89b5266 100644
--- a/src/micropolisj/build_tool/MakeTiles.java
+++ b/src/micropolisj/build_tool/MakeTiles.java
@@ -308,19 +308,19 @@ public class MakeTiles
static TileImage parseFrameSpec(String [] layerStrings)
throws IOException
{
- if (layerStrings.length == 1) {
- return parseLayerSpec(layerStrings[0]);
- }
-
- TileImageLayer result = null;
+ TileImage result = null;
for (String layerStr : layerStrings) {
- TileImageLayer rv = new TileImageLayer(
- result,
- parseLayerSpec(layerStr)
- );
- result = rv;
+ TileImage newLayer = parseLayerSpec(layerStr);
+ if (result == null) {
+ result = newLayer;
+ }
+ else {
+ result = new TileImageLayer(
+ result,
+ newLayer);
+ }
}
return result;
diff --git a/src/micropolisj/graphics/TileImage.java b/src/micropolisj/graphics/TileImage.java
index 5a3f082..8cd8128 100644
--- a/src/micropolisj/graphics/TileImage.java
+++ b/src/micropolisj/graphics/TileImage.java
@@ -24,11 +24,14 @@ public abstract class TileImage
public static class TileImageLayer extends TileImage
{
- public final TileImageLayer below;
+ public final TileImage below;
public final TileImage above;
- public TileImageLayer(TileImageLayer below, TileImage above)
+ public TileImageLayer(TileImage below, TileImage above)
{
+ assert below != null;
+ assert above != null;
+
this.below = below;
this.above = above;
}
@@ -36,9 +39,7 @@ public abstract class TileImage
@Override
public void drawFragment(Graphics2D gr, int destX, int destY, int srcX, int srcY)
{
- if (below != null) {
- below.drawFragment(gr, destX, destY, srcX, srcY);
- }
+ below.drawFragment(gr, destX, destY, srcX, srcY);
above.drawFragment(gr, destX, destY, srcX, srcY);
}
}
@@ -204,25 +205,28 @@ public abstract class TileImage
static TileImage readLayeredImage(XMLStreamReader in, LoaderContext ctx)
throws XMLStreamException
{
- TileImageLayer result = null;
+ TileImage result = null;
while (in.nextTag() != XMLStreamConstants.END_ELEMENT) {
assert in.isStartElement();
TileImage newImg = readTileImage(in, ctx);
- TileImageLayer rv = new TileImageLayer(
- result, //below
- newImg //above
+ if (result == null) {
+ result = newImg;
+ }
+ else {
+ result = new TileImageLayer(
+ result, //below
+ newImg //above
);
- result = rv;
+ }
}
- if (result != null && result.below == null) {
- return result.above;
- }
- else {
- return result;
+ if (result == null) {
+ throw new XMLStreamException("layer must have at least one image");
}
+
+ return result;
}
public static TileImage readTileImage(XMLStreamReader in, LoaderContext ctx)