From 6d76b4316467d1baae59620cbf0341b108e3e78b Mon Sep 17 00:00:00 2001 From: Jason Long Date: Sat, 20 Sep 2014 12:33:25 -0400 Subject: [PATCH] TileImage: move Animation class from MakeTools into Graphics package --- src/micropolisj/build_tool/MakeTiles.java | 10 ++++++-- .../{build_tool => graphics}/Animation.java | 25 ++++++++++--------- src/micropolisj/graphics/TileImage.java | 3 +++ src/micropolisj/gui/TileImages.java | 4 +++ 4 files changed, 28 insertions(+), 14 deletions(-) rename src/micropolisj/{build_tool => graphics}/Animation.java (79%) diff --git a/src/micropolisj/build_tool/MakeTiles.java b/src/micropolisj/build_tool/MakeTiles.java index 89b5266..ec678e2 100644 --- a/src/micropolisj/build_tool/MakeTiles.java +++ b/src/micropolisj/build_tool/MakeTiles.java @@ -1,7 +1,7 @@ package micropolisj.build_tool; import micropolisj.engine.TileSpec; -import micropolisj.graphics.TileImage; +import micropolisj.graphics.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; @@ -423,7 +423,7 @@ public class MakeTiles { File f = new File(fileName + ".ani"); if (f.exists()) { - return Animation.load(f); + return Animation.load(f, loaderContext); } else { return loadImage(fileName); @@ -451,6 +451,12 @@ public class MakeTiles return loadedImages.get(fileName); } + + public TileImage parseFrameSpec(String tmp) + throws IOException + { + return MakeTiles.parseFrameSpec(tmp); + } } static MyLoaderContext loaderContext = new MyLoaderContext(); diff --git a/src/micropolisj/build_tool/Animation.java b/src/micropolisj/graphics/Animation.java similarity index 79% rename from src/micropolisj/build_tool/Animation.java rename to src/micropolisj/graphics/Animation.java index 38b1ab4..df5a5ec 100644 --- a/src/micropolisj/build_tool/Animation.java +++ b/src/micropolisj/graphics/Animation.java @@ -1,24 +1,25 @@ -package micropolisj.build_tool; +package micropolisj.graphics; -import micropolisj.graphics.TileImage; +import java.awt.Dimension; import java.awt.Graphics2D; import java.io.*; import java.util.*; import javax.xml.stream.*; import static micropolisj.XML_Helper.*; -class Animation extends TileImage +public class Animation extends TileImage { static final int DEFAULT_DURATION = 125; - List frames = new ArrayList(); - int totalDuration; - public static Animation load(File aniFile) + public List frames = new ArrayList(); + public int totalDuration; + + public static Animation load(File aniFile, LoaderContext ctx) throws IOException { FileInputStream fis = new FileInputStream(aniFile); Animation self = new Animation(); - self.load(fis); + self.load(fis, ctx); return self; } @@ -29,7 +30,7 @@ class Animation extends TileImage frames.add(f); } - void load(InputStream inStream) + void load(InputStream inStream, LoaderContext ctx) throws IOException { try { @@ -51,7 +52,7 @@ class Animation extends TileImage int duration = tmp != null ? Integer.parseInt(tmp) : DEFAULT_DURATION; tmp = in.getElementText(); - addFrame( MakeTiles.parseFrameSpec(tmp), duration ); + addFrame( ctx.parseFrameSpec(tmp), duration ); } else { // unrecognized element @@ -68,10 +69,10 @@ class Animation extends TileImage } } - static class Frame + public class Frame { - TileImage frame; - int duration; + public final TileImage frame; + public final int duration; public Frame(TileImage frame, int duration) { diff --git a/src/micropolisj/graphics/TileImage.java b/src/micropolisj/graphics/TileImage.java index 8cd8128..bcc85bc 100644 --- a/src/micropolisj/graphics/TileImage.java +++ b/src/micropolisj/graphics/TileImage.java @@ -132,6 +132,9 @@ public abstract class TileImage throws IOException; SourceImage getImage(String name) throws IOException; + + TileImage parseFrameSpec(String tmp) + throws IOException; } static SimpleTileImage readSimpleImage(XMLStreamReader in, LoaderContext ctx) diff --git a/src/micropolisj/gui/TileImages.java b/src/micropolisj/gui/TileImages.java index 6b2f866..9dd6352 100644 --- a/src/micropolisj/gui/TileImages.java +++ b/src/micropolisj/gui/TileImages.java @@ -63,6 +63,10 @@ public class TileImages } return images.get(fileName); } + + public TileImage parseFrameSpec(String tmp) { + throw new UnsupportedOperationException(); + } } void initTileImageMap()