mirror of https://github.com/OpenTTD/OpenTTD
(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.release/0.5
parent
504f88902e
commit
ea706f8ead
|
@ -271,7 +271,7 @@ IndustryType GetIndustryType(TileIndex tile)
|
||||||
|
|
||||||
for (iloop = IT_COAL_MINE; iloop < IT_END; iloop += 1) {
|
for (iloop = IT_COAL_MINE; iloop < IT_END; iloop += 1) {
|
||||||
if (IS_BYTE_INSIDE(this_type, industry_gfx_Solver[iloop].MinGfx,
|
if (IS_BYTE_INSIDE(this_type, industry_gfx_Solver[iloop].MinGfx,
|
||||||
industry_gfx_Solver[iloop].MaxGfx)) {
|
industry_gfx_Solver[iloop].MaxGfx+1)) {
|
||||||
return iloop;
|
return iloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -633,15 +633,17 @@ static void AnimateTile_Industry(TileIndex tile)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 30: case 31: case 32:
|
case GFX_OILWELL_ANIM1:
|
||||||
|
case GFX_OILWELL_ANIM2:
|
||||||
|
case GFX_OILWELL_ANIM3:
|
||||||
if ((_tick_counter & 7) == 0) {
|
if ((_tick_counter & 7) == 0) {
|
||||||
bool b = CHANCE16(1,7);
|
bool b = CHANCE16(1,7);
|
||||||
IndustryGfx gfx = GetIndustryGfx(tile);
|
IndustryGfx gfx = GetIndustryGfx(tile);
|
||||||
|
|
||||||
m = GB(_m[tile].m1, 0, 2) + 1;
|
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;
|
_m[tile].m1 = 0x83;
|
||||||
SetIndustryGfx(tile, 29);
|
SetIndustryGfx(tile, GFX_OILWELL_BASE);
|
||||||
DeleteAnimatedTile(tile);
|
DeleteAnimatedTile(tile);
|
||||||
} else {
|
} else {
|
||||||
SB(_m[tile].m1, 0, 2, m);
|
SB(_m[tile].m1, 0, 2, m);
|
||||||
|
|
|
@ -11,8 +11,18 @@
|
||||||
|
|
||||||
typedef byte IndustryGfx;
|
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 {
|
enum {
|
||||||
GFX_POWERPLANT_SPARKS = 10,
|
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_BUBBLE_CATCHER = 162,
|
||||||
GFX_TOFFEE_QUARY = 165,
|
GFX_TOFFEE_QUARY = 165,
|
||||||
GFX_SUGAR_MINE_SIEVE = 174,
|
GFX_SUGAR_MINE_SIEVE = 174,
|
||||||
|
|
|
@ -2091,7 +2091,7 @@ static void AnimateTile_Station(TileIndex tile)
|
||||||
// again hardcoded...was a quick hack
|
// again hardcoded...was a quick hack
|
||||||
|
|
||||||
// turning radar / windsack on airport
|
// 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)
|
if (_tick_counter & 3)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2101,7 +2101,7 @@ static void AnimateTile_Station(TileIndex tile)
|
||||||
SetStationGfx(tile, gfx);
|
SetStationGfx(tile, gfx);
|
||||||
MarkTileDirtyByTile(tile);
|
MarkTileDirtyByTile(tile);
|
||||||
//added - begin
|
//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)
|
if (_tick_counter & 3)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2117,7 +2117,7 @@ static void AnimateTile_Station(TileIndex tile)
|
||||||
SetStationGfx(tile, gfx);
|
SetStationGfx(tile, gfx);
|
||||||
MarkTileDirtyByTile(tile);
|
MarkTileDirtyByTile(tile);
|
||||||
//added - end
|
//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)
|
if (_tick_counter & 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue