(svn r4425) Fix bug introduced in r4411 : while IS_BYTE_INSIDE, max value is STRICKLY LESS THEN. This caused airports animations to stay unanimated. Industries were similarly affected.

Thanks to Richk67 for finding it.
Also, more Gfx define and use.
This commit is contained in:
belugas 2006-04-15 01:06:53 +00:00
parent 504f88902e
commit ea706f8ead
3 changed files with 19 additions and 7 deletions

View File

@ -271,7 +271,7 @@ IndustryType GetIndustryType(TileIndex tile)
for (iloop = IT_COAL_MINE; iloop < IT_END; iloop += 1) {
if (IS_BYTE_INSIDE(this_type, industry_gfx_Solver[iloop].MinGfx,
industry_gfx_Solver[iloop].MaxGfx)) {
industry_gfx_Solver[iloop].MaxGfx+1)) {
return iloop;
}
}
@ -633,15 +633,17 @@ static void AnimateTile_Industry(TileIndex tile)
}
break;
case 30: case 31: case 32:
case GFX_OILWELL_ANIM1:
case GFX_OILWELL_ANIM2:
case GFX_OILWELL_ANIM3:
if ((_tick_counter & 7) == 0) {
bool b = CHANCE16(1,7);
IndustryGfx gfx = GetIndustryGfx(tile);
m = GB(_m[tile].m1, 0, 2) + 1;
if (m == 4 && (m = 0, ++gfx) == 32 + 1 && (gfx = 30, b)) {
if (m == 4 && (m = 0, ++gfx) == GFX_OILWELL_ANIM3 + 1 && (gfx = GFX_OILWELL_ANIM1, b)) {
_m[tile].m1 = 0x83;
SetIndustryGfx(tile, 29);
SetIndustryGfx(tile, GFX_OILWELL_BASE);
DeleteAnimatedTile(tile);
} else {
SB(_m[tile].m1, 0, 2, m);

View File

@ -11,8 +11,18 @@
typedef byte IndustryGfx;
/**
* The following enums are indices used to know what to draw for this industry tile.
* They all are pointing toward array _industry_draw_tile_data, in table/industry_land.h
* How to calculate the correct position ? GFXid << 2 | IndustryStage (0 to 3)
*/
enum {
GFX_POWERPLANT_SPARKS = 10,
GFX_OILWELL_BASE = 29,
GFX_OILWELL_ANIM1 = 30,
GFX_OILWELL_ANIM2 = 31,
GFX_OILWELL_ANIM3 = 32,
GFX_BUBBLE_CATCHER = 162,
GFX_TOFFEE_QUARY = 165,
GFX_SUGAR_MINE_SIEVE = 174,

View File

@ -2091,7 +2091,7 @@ static void AnimateTile_Station(TileIndex tile)
// again hardcoded...was a quick hack
// turning radar / windsack on airport
if (IS_BYTE_INSIDE(gfx, GFX_RADAR_LARGE_FIRST, GFX_RADAR_LARGE_LAST)) {
if (IS_BYTE_INSIDE(gfx, GFX_RADAR_LARGE_FIRST, GFX_RADAR_LARGE_LAST+1)) {
if (_tick_counter & 3)
return;
@ -2101,7 +2101,7 @@ static void AnimateTile_Station(TileIndex tile)
SetStationGfx(tile, gfx);
MarkTileDirtyByTile(tile);
//added - begin
} else if (IS_BYTE_INSIDE(gfx, GFX_RADAR_INTERNATIONAL_FIRST, GFX_RADAR_METROPOLITAN_LAST)) {
} else if (IS_BYTE_INSIDE(gfx, GFX_RADAR_INTERNATIONAL_FIRST, GFX_RADAR_METROPOLITAN_LAST+1)) {
if (_tick_counter & 3)
return;
@ -2117,7 +2117,7 @@ static void AnimateTile_Station(TileIndex tile)
SetStationGfx(tile, gfx);
MarkTileDirtyByTile(tile);
//added - end
} else if (IS_BYTE_INSIDE(gfx, GFX_WINDSACK_FIRST, GFX_WINDSACK_LAST)) {
} else if (IS_BYTE_INSIDE(gfx, GFX_WINDSACK_FIRST, GFX_WINDSACK_LAST+1)) {
if (_tick_counter & 1)
return;