diff --git a/src/micropolisj/engine/Micropolis.java b/src/micropolisj/engine/Micropolis.java index d4b94c8..d3f9e68 100644 --- a/src/micropolisj/engine/Micropolis.java +++ b/src/micropolisj/engine/Micropolis.java @@ -2956,4 +2956,9 @@ public class Micropolis { budget.totalFunds = totalFunds; } + + public int getAnimationCycle() + { + return acycle; + } } diff --git a/src/micropolisj/gui/MicropolisDrawingArea.java b/src/micropolisj/gui/MicropolisDrawingArea.java index 0ff67a7..8c71581 100644 --- a/src/micropolisj/gui/MicropolisDrawingArea.java +++ b/src/micropolisj/gui/MicropolisDrawingArea.java @@ -196,7 +196,8 @@ public class MicropolisDrawingArea extends JComponent } } - gr.drawImage(tileImages.getTileImage(cell), + Image img = tileImages.getTileImage(cell, m.getAnimationCycle()); + gr.drawImage(img, x*TILE_WIDTH + (shakeStep != 0 ? getShakeModifier(y) : 0), y*TILE_HEIGHT, null); diff --git a/src/micropolisj/gui/TileImages.java b/src/micropolisj/gui/TileImages.java index c00e420..2fb2f09 100644 --- a/src/micropolisj/gui/TileImages.java +++ b/src/micropolisj/gui/TileImages.java @@ -41,6 +41,11 @@ public class TileImages static class AnimatedTile extends TileImage { SimpleTileImage [] frames; + + public SimpleTileImage getFrameByTime(int acycle) + { + return frames[acycle % frames.length]; + } } private TileImages(String name, int size) @@ -180,6 +185,11 @@ public class TileImages } public int getTileImageNumber(int tileNumber) + { + return getTileImageNumber(tileNumber, 0); + } + + public int getTileImageNumber(int tileNumber, int acycle) { assert (tileNumber & LOMASK) == tileNumber; assert tileNumber >= 0 && tileNumber < tileImageMap.length; @@ -190,7 +200,7 @@ public class TileImages } else if (ti instanceof AnimatedTile) { AnimatedTile anim = (AnimatedTile) ti; - return anim.frames[0].imageNumber; + return anim.getFrameByTime(acycle).imageNumber; } else { assert false; @@ -198,14 +208,19 @@ public class TileImages } } - public Image getTileImage(int tileNumber) + public Image getTileImage(int tile, int acycle) { assert images != null; - int imageNumber = getTileImageNumber(tileNumber); + int imageNumber = getTileImageNumber(tile, acycle); return images[imageNumber]; } + public Image getTileImage(int tile) + { + return getTileImage(tile, 0); + } + private Image [] loadTileImages(String resourceName, int srcSize) { URL iconUrl = TileImages.class.getResource(resourceName);