TileImages: draw animated frames

(still need to implement redrawing of animated frames)
This commit is contained in:
Jason Long 2014-06-19 20:47:44 -04:00
parent 48cd74c977
commit 9c5c41e0f4
3 changed files with 25 additions and 4 deletions

View file

@ -2956,4 +2956,9 @@ public class Micropolis
{ {
budget.totalFunds = totalFunds; budget.totalFunds = totalFunds;
} }
public int getAnimationCycle()
{
return acycle;
}
} }

View file

@ -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), x*TILE_WIDTH + (shakeStep != 0 ? getShakeModifier(y) : 0),
y*TILE_HEIGHT, y*TILE_HEIGHT,
null); null);

View file

@ -41,6 +41,11 @@ public class TileImages
static class AnimatedTile extends TileImage static class AnimatedTile extends TileImage
{ {
SimpleTileImage [] frames; SimpleTileImage [] frames;
public SimpleTileImage getFrameByTime(int acycle)
{
return frames[acycle % frames.length];
}
} }
private TileImages(String name, int size) private TileImages(String name, int size)
@ -180,6 +185,11 @@ public class TileImages
} }
public int getTileImageNumber(int tileNumber) public int getTileImageNumber(int tileNumber)
{
return getTileImageNumber(tileNumber, 0);
}
public int getTileImageNumber(int tileNumber, int acycle)
{ {
assert (tileNumber & LOMASK) == tileNumber; assert (tileNumber & LOMASK) == tileNumber;
assert tileNumber >= 0 && tileNumber < tileImageMap.length; assert tileNumber >= 0 && tileNumber < tileImageMap.length;
@ -190,7 +200,7 @@ public class TileImages
} }
else if (ti instanceof AnimatedTile) { else if (ti instanceof AnimatedTile) {
AnimatedTile anim = (AnimatedTile) ti; AnimatedTile anim = (AnimatedTile) ti;
return anim.frames[0].imageNumber; return anim.getFrameByTime(acycle).imageNumber;
} }
else { else {
assert false; assert false;
@ -198,14 +208,19 @@ public class TileImages
} }
} }
public Image getTileImage(int tileNumber) public Image getTileImage(int tile, int acycle)
{ {
assert images != null; assert images != null;
int imageNumber = getTileImageNumber(tileNumber); int imageNumber = getTileImageNumber(tile, acycle);
return images[imageNumber]; return images[imageNumber];
} }
public Image getTileImage(int tile)
{
return getTileImage(tile, 0);
}
private Image [] loadTileImages(String resourceName, int srcSize) private Image [] loadTileImages(String resourceName, int srcSize)
{ {
URL iconUrl = TileImages.class.getResource(resourceName); URL iconUrl = TileImages.class.getResource(resourceName);