(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.
authorbelugas
Sat, 15 Apr 2006 01:06:53 +0000
changeset 3553 b34eae3b8d0f
parent 3552 99b6d97ab6e8
child 3554 c16eadc2d060
(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.
industry_cmd.c
industry_map.h
station_cmd.c
--- a/industry_cmd.c	Fri Apr 14 22:29:34 2006 +0000
+++ b/industry_cmd.c	Sat Apr 15 01:06:53 2006 +0000
@@ -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	Fri Apr 14 22:29:34 2006 +0000
+++ b/industry_map.h	Sat Apr 15 01:06:53 2006 +0000
@@ -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	Fri Apr 14 22:29:34 2006 +0000
+++ b/station_cmd.c	Sat Apr 15 01:06:53 2006 +0000
@@ -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;