changeset 3553:b152c646dcb5 draft

(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.
author belugas <belugas@openttd.org>
date Sat, 15 Apr 2006 01:06:53 +0000
parents 73df926087c8
children 95f3020d5695
files industry_cmd.c industry_map.h station_cmd.c
diffstat 3 files changed, 19 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/industry_cmd.c
+++ b/industry_cmd.c
@@ -271,7 +271,7 @@
 
 	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 @@
 		}
 		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);
--- 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,
--- a/station_cmd.c
+++ b/station_cmd.c
@@ -2091,7 +2091,7 @@
 	// 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 @@
 		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 @@
 		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;