(svn r764) Enumerate the houses only one per town can exist and use the enums instead of magic numbers to check for these
authortron
Mon, 22 Nov 2004 18:42:03 +0000
changeset 483 e27622930ddc
parent 482 3ed6804ef31d
child 484 3fad52d29f00
(svn r764) Enumerate the houses only one per town can exist and use the enums instead of magic numbers to check for these
table/town_land.h
town_cmd.c
--- a/table/town_land.h	Mon Nov 22 11:01:30 2004 +0000
+++ b/table/town_land.h	Mon Nov 22 18:42:03 2004 +0000
@@ -1,3 +1,13 @@
+enum {
+	HOUSE_TEMP_CHURCH    = 0x03,
+	HOUSE_STADIUM        = 0x14,
+	HOUSE_MODERN_STADIUM = 0x20,
+	HOUSE_ARCT_CHURCH    = 0x3c,
+	HOUSE_SNOW_CHURCH    = 0x3d,
+	HOUSE_TROP_CHURCH    = 0x53,
+	HOUSE_TOY_CHURCH     = 0x5b
+};
+
 #define M(s1, s2, sx, sy, w, h, dz, p) {s1, s2, sx, sy, w - 1, h - 1, dz, p}
 
 static const DrawTownTileStruct _town_draw_tile_data[] = {
--- a/town_cmd.c	Mon Nov 22 11:01:30 2004 +0000
+++ b/town_cmd.c	Mon Nov 22 18:42:03 2004 +0000
@@ -13,6 +13,11 @@
 #include "economy.h"
 #include "gui.h"
 
+enum {
+	TOWN_HAS_CHURCH     = 0x02,
+	TOWN_HAS_STADIUM    = 0x04
+};
+
 // Local
 static int _grow_town_result;
 
@@ -1133,11 +1138,22 @@
 				continue;
 
 			// Special houses that there can be only one of.
-			oneof = 0;
-			if (house == 0x5B || house == 0x53 || house == 3 ||	house == 0x3C || house == 0x3D)
-				oneof = 2;
-			else if (house == 0x20 || house == 0x14)
-				oneof = 4;
+			switch (house) {
+				case HOUSE_TEMP_CHURCH:
+				case HOUSE_ARCT_CHURCH:
+				case HOUSE_SNOW_CHURCH:
+				case HOUSE_TROP_CHURCH:
+				case HOUSE_TOY_CHURCH:
+					oneof = TOWN_HAS_CHURCH;
+					break;
+				case HOUSE_STADIUM:
+				case HOUSE_MODERN_STADIUM:
+					oneof = TOWN_HAS_STADIUM;
+					break;
+				default:
+					oneof = 0;
+					break;
+			}
 
 			if (t->flags12 & oneof)
 				continue;
@@ -1303,11 +1319,21 @@
 	t->num_houses--;
 
 	// Clear flags for houses that only may exist once/town.
-	if (house == 0x5B || house == 0x53 || house == 0x3C ||
-			house == 0x3D || house == 0x03)
-		t->flags12 &= ~2;
-	if (house == 0x14 || house == 0x20)
-		t->flags12 &= ~4;
+	switch (house) {
+		case HOUSE_TEMP_CHURCH:
+		case HOUSE_ARCT_CHURCH:
+		case HOUSE_SNOW_CHURCH:
+		case HOUSE_TROP_CHURCH:
+		case HOUSE_TOY_CHURCH:
+			t->flags12 &= ~TOWN_HAS_CHURCH;
+			break;
+		case HOUSE_STADIUM:
+		case HOUSE_MODERN_STADIUM:
+			t->flags12 &= ~TOWN_HAS_STADIUM;
+			break;
+		default:
+			break;
+	}
 
 	// Do the actual clearing of tiles
 	eflags = _housetype_extra_flags[house];