diff options
-rw-r--r-- | table/town_land.h | 10 | ||||
-rw-r--r-- | town_cmd.c | 46 |
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]; |