From 409f338e6b21e9fed877493b8c9a5ccbc510929f Mon Sep 17 00:00:00 2001 From: Jason Long Date: Sat, 9 Aug 2014 13:37:34 -0400 Subject: [PATCH] refactor: make readTileImage() to read any tile image descriptor type --- src/micropolisj/gui/TileImages.java | 42 ++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/micropolisj/gui/TileImages.java b/src/micropolisj/gui/TileImages.java index ec7c8c8..7b05fc7 100644 --- a/src/micropolisj/gui/TileImages.java +++ b/src/micropolisj/gui/TileImages.java @@ -82,6 +82,8 @@ public class TileImages } String tmp = in.getAttributeValue(null, "offsetY"); img.offsetY = tmp != null ? Integer.parseInt(tmp) : 0; + + skipToEndElement(in); return img; } @@ -103,6 +105,33 @@ public class TileImages return anim; } + static TileImage readTileImage(XMLStreamReader in, LoaderContext ctx) + throws XMLStreamException + { + TileImage img = null; + + while (in.nextTag() != XMLStreamConstants.END_ELEMENT) { + assert in.isStartElement(); + if (in.getLocalName().equals("image")) { + img = readSimpleImage(in, ctx); + } + else if (in.getLocalName().equals("animation")) { + img = readAnimation(in, ctx); + } + else { + skipToEndElement(in); + } + } + + if (img == null) { + throw new XMLStreamException( + "missing image descriptor" + ); + } + + return img; + } + class MyLoaderContext implements LoaderContext { Map images = new HashMap(); @@ -158,18 +187,7 @@ public class TileImages } String tileName = in.getAttributeValue(null, "name"); - TileImage img = null; - - while (in.nextTag() != XMLStreamConstants.END_ELEMENT) { - assert in.isStartElement(); - if (in.getLocalName().equals("image")) { - img = readSimpleImage(in, ctx); - } - else if (in.getLocalName().equals("animation")) { - img = readAnimation(in, ctx); - } - skipToEndElement(in); - } + TileImage img = readTileImage(in, ctx); assert tileName != null; assert img != null;