TileImages: draw animated frames
(still need to implement redrawing of animated frames)
This commit is contained in:
parent
48cd74c977
commit
9c5c41e0f4
3 changed files with 25 additions and 4 deletions
|
@ -2956,4 +2956,9 @@ public class Micropolis
|
|||
{
|
||||
budget.totalFunds = totalFunds;
|
||||
}
|
||||
|
||||
public int getAnimationCycle()
|
||||
{
|
||||
return acycle;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Reference in a new issue