mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-01-22 23:26:34 +00:00
(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:
parent
504f88902e
commit
ea706f8ead
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user