(svn r764) Enumerate the houses only one per town can exist and use the enums instead of magic numbers to check for these

This commit is contained in:
tron 2004-11-22 18:42:03 +00:00
parent 8a3d7cce1c
commit d51887fbed
2 changed files with 46 additions and 10 deletions

View File

@ -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[] = {

View File

@ -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];