summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbelugas <belugas@openttd.org>2006-04-15 01:06:53 +0000
committerbelugas <belugas@openttd.org>2006-04-15 01:06:53 +0000
commitea706f8eade49a6dd61be942ba6d16e7847ccbeb (patch)
tree9f5582fd2da07ef84be1070e505d2b9bd98bbf03
parent504f88902e99187d28748efbf19b1e92b5c8852f (diff)
downloadopenttd-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.c10
-rw-r--r--industry_map.h10
-rw-r--r--station_cmd.c6
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;