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