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;
}
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),
y*TILE_HEIGHT,
null);

View file

@ -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);