summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--table/town_land.h10
-rw-r--r--town_cmd.c46
2 files changed, 46 insertions, 10 deletions
diff --git a/table/town_land.h b/table/town_land.h
index 884195212..24b959819 100644
--- a/table/town_land.h
+++ b/table/town_land.h
@@ -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[] = {
diff --git a/town_cmd.c b/town_cmd.c
index 4536c1541..e96494a83 100644
--- a/town_cmd.c
+++ b/town_cmd.c
@@ -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 @@ static void DoBuildTownHouse(Town *t, uint tile)
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 @@ static void ClearTownHouse(Town *t, uint tile) {
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];