TileImages: allow having multiple tile image files

This commit is contained in:
Jason Long 2015-01-07 13:20:41 -05:00
parent dbdad3b37e
commit 7415edeb9e

View file

@ -65,14 +65,21 @@ public class TileImages
interface LoaderContext interface LoaderContext
{ {
BufferedImage getDefaultImage(); BufferedImage getDefaultImage();
BufferedImage getImage(String name);
} }
static SimpleTileImage readSimpleImage(XMLStreamReader in, LoaderContext ctx) static SimpleTileImage readSimpleImage(XMLStreamReader in, LoaderContext ctx)
throws XMLStreamException throws XMLStreamException
{ {
SimpleTileImage img = new SimpleTileImage(); 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"); String tmp = in.getAttributeValue(null, "offsetY");
img.srcImage = ctx.getDefaultImage();
img.imageNumber = tmp != null ? Integer.parseInt(tmp) : 0; img.imageNumber = tmp != null ? Integer.parseInt(tmp) : 0;
return img; return img;
} }
@ -97,18 +104,21 @@ public class TileImages
class MyLoaderContext implements LoaderContext class MyLoaderContext implements LoaderContext
{ {
BufferedImage defImage; Map<String,BufferedImage> images = new HashMap<String,BufferedImage>();
MyLoaderContext()
{
String resourceName = "/" + name + "/tiles.png";
defImage = loadImage(resourceName);
}
//implements LoaderContext //implements LoaderContext
public BufferedImage getDefaultImage() 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);
} }
} }