git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8517 c06c8d41-db1a-0410-9941-cceddc491573
YRZBGNKW7PP3UJEKNO22FMMC7W5V52L4LZAWE3C3UKTO2NNSXA4QC
ITSYPZJ5HOJO3YTPUGAIZSV373744ZHJO7ANDLUGFBV5XMZLLABAC
7IERR3KESLBDHEMGSFRYGA66PZBPGKPUGMFDCSFR3WDX7RXD5OTAC
3XRTONH32W5DNI2V2SGAHXN3EHOZQ26ZXMVYL5TRP6HLQN7P4HNAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
D7EPLNYHJH6C4CTMHCOUUODKGHCJRE4CGKNVSCHCSABN6ZOD2ZBAC
EQNA77UM24FFYQ2N44FG53KQGLS43ZGEX7XS5UWR6MM2HE3JBKAAC
7Q7PY2DHSCW7Y663XJUTBFZTHXCF6KPIMZV2A6XORBCMMHIJWVGQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
44LY6TB272RWWFLON2XOUIXWFPUXM5OMX6KLX66HH37BNURVT4DQC
U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC
KIDHPMZSLUVK3TF4565MH7SJ57C45SORJXR274VJTOULNOTGHQ4AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
for (int y = 0; y < GYM; y++)
for (int x = 0; x < GXM; x++)
{
int max_wall_flavor = tile_dngn_count(env.tile_default.wall) - 1;
int max_floor_flavor = tile_dngn_count(env.tile_default.floor) - 1;
int wall_rnd = random_range(0, max_wall_flavor);
int floor_rnd = random_range(0, max_floor_flavor);
for (rectangle_iterator ri(1); ri; ++ri)
tile_init_flavour(*ri);
}
void tile_init_flavour(const coord_def &gc)
{
if (!in_bounds(gc))
return;
int wall_rnd = random2(tile_dngn_count(env.tile_default.wall));
int floor_rnd = random2(tile_dngn_count(env.tile_default.floor));
if (!env.tile_flv(gc).floor)
env.tile_flv(gc).floor = env.tile_default.floor + floor_rnd;
if (!env.tile_flv(gc).wall)
env.tile_flv(gc).wall = env.tile_default.wall + wall_rnd;
if (!env.tile_flv[x][y].floor)
env.tile_flv[x][y].floor = env.tile_default.floor + floor_rnd;
if (!env.tile_flv[x][y].wall)
env.tile_flv[x][y].wall = env.tile_default.wall + wall_rnd;
if (grd(gc) == DNGN_CLOSED_DOOR || grd(gc) == DNGN_OPEN_DOOR)
{
// Check for horizontal gates.
if (door_left || door_right)
{
int target;
if (door_left && door_right)
target = TILE_DNGN_GATE_CLOSED_MIDDLE;
else if (door_left)
target = TILE_DNGN_GATE_CLOSED_RIGHT;
else
target = TILE_DNGN_GATE_CLOSED_LEFT;
if (door_left || door_right)
{
int target;
if (door_left && door_right)
target = TILE_DNGN_GATE_CLOSED_MIDDLE;
else if (door_left)
target = TILE_DNGN_GATE_CLOSED_RIGHT;
else
target = TILE_DNGN_GATE_CLOSED_LEFT;
// NOTE: This requires that closed gates and open gates
// are positioned in the tile set relative to their
// door counterpart.
env.tile_flv[x][y].special =
target - TILE_DNGN_CLOSED_DOOR;
}
else
{
env.tile_flv[x][y].special = 0;
}
}
else if (grd[x][y] == DNGN_SECRET_DOOR)
{
env.tile_flv[x][y].special = 0;
}
else if (!env.tile_flv[x][y].special)
{
env.tile_flv[x][y].special = random2(256);
}
// NOTE: This requires that closed gates and open gates
// are positioned in the tile set relative to their
// door counterpart.
env.tile_flv(gc).special = target - TILE_DNGN_CLOSED_DOOR;
}
else
{
env.tile_flv(gc).special = 0;