From 7415edeb9e36e86bdb3a19895d9e5df8f37ff907 Mon Sep 17 00:00:00 2001 From: Jason Long Date: Wed, 7 Jan 2015 13:20:41 -0500 Subject: [PATCH] TileImages: allow having multiple tile image files --- src/micropolisj/gui/TileImages.java | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/micropolisj/gui/TileImages.java b/src/micropolisj/gui/TileImages.java index 3e0e40a..04c5f35 100644 --- a/src/micropolisj/gui/TileImages.java +++ b/src/micropolisj/gui/TileImages.java @@ -65,14 +65,21 @@ public class TileImages interface LoaderContext { BufferedImage getDefaultImage(); + BufferedImage getImage(String name); } static SimpleTileImage readSimpleImage(XMLStreamReader in, LoaderContext ctx) throws XMLStreamException { SimpleTileImage img = new SimpleTileImage(); + String srcImageName = in.getAttributeValue(null, "src"); + if (srcImageName != null) { + img.srcImage = ctx.getImage(srcImageName); + } + else { + img.srcImage = ctx.getDefaultImage(); + } String tmp = in.getAttributeValue(null, "offsetY"); - img.srcImage = ctx.getDefaultImage(); img.imageNumber = tmp != null ? Integer.parseInt(tmp) : 0; return img; } @@ -97,18 +104,21 @@ public class TileImages class MyLoaderContext implements LoaderContext { - BufferedImage defImage; - - MyLoaderContext() - { - String resourceName = "/" + name + "/tiles.png"; - defImage = loadImage(resourceName); - } + Map images = new HashMap(); //implements LoaderContext public BufferedImage getDefaultImage() { - return defImage; + return getImage("tiles.png"); + } + + //implements LoaderContext + public BufferedImage getImage(String fileName) + { + if (!images.containsKey(name)) { + images.put(name, loadImage("/"+name+"/"+fileName)); + } + return images.get(name); } }