diff options
author | belugas <belugas@openttd.org> | 2006-04-15 01:06:53 +0000 |
---|---|---|
committer | belugas <belugas@openttd.org> | 2006-04-15 01:06:53 +0000 |
commit | ea706f8eade49a6dd61be942ba6d16e7847ccbeb (patch) | |
tree | 9f5582fd2da07ef84be1070e505d2b9bd98bbf03 | |
parent | 504f88902e99187d28748efbf19b1e92b5c8852f (diff) | |
download | openttd-ea706f8eade49a6dd61be942ba6d16e7847ccbeb.tar.xz |
(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.
-rw-r--r-- | industry_cmd.c | 10 | ||||
-rw-r--r-- | industry_map.h | 10 | ||||
-rw-r--r-- | station_cmd.c | 6 |
3 files changed, 19 insertions, 7 deletions
diff --git a/industry_cmd.c b/industry_cmd.c index 04a11f398..c84248abe 100644 --- a/industry_cmd.c +++ b/industry_cmd.c @@ -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); diff --git a/industry_map.h b/industry_map.h index a4bf06eef..529e75317 100644 --- a/industry_map.h +++ b/industry_map.h @@ -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, diff --git a/station_cmd.c b/station_cmd.c index 5d3974bac..23348414b 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -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; |