bool build_type2(PlayerType *player_ptr, dun_data_type *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
- auto *floor_ptr = player_ptr->current_floor_ptr;
+ auto &floor = *player_ptr->current_floor_ptr;
int yval;
int xval;
const auto is_pos_found = find_space(player_ptr, dd_ptr, &yval, &xval, 11, 25);
}
/* Choose lite or dark */
- const auto should_brighten = (floor_ptr->dun_level <= randint1(25)) && floor_ptr->get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
+ const auto should_brighten = (floor.dun_level <= randint1(25)) && floor.get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
/* Determine extents of the first room */
auto y1a = yval - randint1(4);
/* Place a full floor for room "a" */
for (auto y = y1a - 1; y <= y2a + 1; y++) {
for (auto x = x1a - 1; x <= x2a + 1; x++) {
- auto &grid = floor_ptr->get_grid({ y, x });
+ auto &grid = floor.get_grid({ y, x });
place_grid(player_ptr, &grid, GB_FLOOR);
grid.info |= (CAVE_ROOM);
if (should_brighten) {
/* Place a full floor for room "b" */
for (auto y = y1b - 1; y <= y2b + 1; y++) {
for (auto x = x1b - 1; x <= x2b + 1; x++) {
- auto &grid = floor_ptr->get_grid({ y, x });
+ auto &grid = floor.get_grid({ y, x });
place_grid(player_ptr, &grid, GB_FLOOR);
grid.info |= (CAVE_ROOM);
if (should_brighten) {
/* Place the walls around room "a" */
for (auto y = y1a - 1; y <= y2a + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1a - 1 }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2a + 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1a - 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2a + 1 }), GB_OUTER);
}
for (auto x = x1a - 1; x <= x2a + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1a - 1, x }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2a + 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y1a - 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y2a + 1, x }), GB_OUTER);
}
/* Place the walls around room "b" */
for (auto y = y1b - 1; y <= y2b + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1b - 1 }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2b + 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1b - 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2b + 1 }), GB_OUTER);
}
for (auto x = x1b - 1; x <= x2b + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1b - 1, x }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2b + 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y1b - 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y2b + 1, x }), GB_OUTER);
}
/* Replace the floor for room "a" */
for (auto y = y1a; y <= y2a; y++) {
for (auto x = x1a; x <= x2a; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_FLOOR);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_FLOOR);
}
}
/* Replace the floor for room "b" */
for (auto y = y1b; y <= y2b; y++) {
for (auto x = x1b; x <= x2b; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_FLOOR);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_FLOOR);
}
}
bool build_type3(PlayerType *player_ptr, dun_data_type *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
- auto *floor_ptr = player_ptr->current_floor_ptr;
+ auto &floor = *player_ptr->current_floor_ptr;
int yval;
int xval;
const auto is_pos_found = find_space(player_ptr, dd_ptr, &yval, &xval, 11, 25);
}
/* Choose lite or dark */
- const auto &dungeon = floor_ptr->get_dungeon_definition();
- const auto should_brighten = ((floor_ptr->dun_level <= randint1(25)) && dungeon.flags.has_not(DungeonFeatureType::DARKNESS));
+ const auto &dungeon = floor.get_dungeon_definition();
+ const auto should_brighten = ((floor.dun_level <= randint1(25)) && dungeon.flags.has_not(DungeonFeatureType::DARKNESS));
/* For now, always 3x3 */
auto wx = 1;
/* Place a full floor for room "a" */
for (auto y = y1a - 1; y <= y2a + 1; y++) {
for (auto x = x1a - 1; x <= x2a + 1; x++) {
- auto &grid = floor_ptr->get_grid({ y, x });
+ auto &grid = floor.get_grid({ y, x });
place_grid(player_ptr, &grid, GB_FLOOR);
grid.info |= (CAVE_ROOM);
if (should_brighten) {
/* Place a full floor for room "b" */
for (auto y = y1b - 1; y <= y2b + 1; y++) {
for (auto x = x1b - 1; x <= x2b + 1; x++) {
- auto &grid = floor_ptr->get_grid({ y, x });
+ auto &grid = floor.get_grid({ y, x });
place_grid(player_ptr, &grid, GB_FLOOR);
grid.info |= (CAVE_ROOM);
if (should_brighten) {
/* Place the walls around room "a" */
for (auto y = y1a - 1; y <= y2a + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1a - 1 }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2a + 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1a - 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2a + 1 }), GB_OUTER);
}
for (auto x = x1a - 1; x <= x2a + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1a - 1, x }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2a + 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y1a - 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y2a + 1, x }), GB_OUTER);
}
/* Place the walls around room "b" */
for (auto y = y1b - 1; y <= y2b + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1b - 1 }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2b + 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1b - 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2b + 1 }), GB_OUTER);
}
for (auto x = x1b - 1; x <= x2b + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1b - 1, x }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2b + 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y1b - 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y2b + 1, x }), GB_OUTER);
}
/* Replace the floor for room "a" */
for (auto y = y1a; y <= y2a; y++) {
for (auto x = x1a; x <= x2a; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_FLOOR);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_FLOOR);
}
}
/* Replace the floor for room "b" */
for (auto y = y1b; y <= y2b; y++) {
for (auto x = x1b; x <= x2b; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_FLOOR);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_FLOOR);
}
}
case 1: {
for (auto y = y1b; y <= y2b; y++) {
for (auto x = x1a; x <= x2a; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
}
break;
case 2: {
/* Build the vault */
for (auto y = y1b; y <= y2b; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1a }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2a }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1a }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2a }), GB_INNER);
}
for (auto x = x1a; x <= x2a; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1b, x }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y1b, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y1b, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y1b, x }), GB_INNER);
}
/* Place a secret door on the inner room */
vault_monsters(player_ptr, yval, xval, randint0(2) + 3);
/* Traps naturally */
- vault_traps(floor_ptr, yval, xval, 4, 4, randint0(3) + 2);
+ vault_traps(&floor, yval, xval, 4, 4, randint0(3) + 2);
break;
}
continue;
}
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1a - 1 }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2a + 1 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1a - 1 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2a + 1 }), GB_INNER);
}
/* Pinch the north/south sides */
continue;
}
- place_grid(player_ptr, &floor_ptr->grid_array[y1b - 1][x], GB_INNER);
- place_grid(player_ptr, &floor_ptr->grid_array[y2b + 1][x], GB_INNER);
+ place_grid(player_ptr, &floor.grid_array[y1b - 1][x], GB_INNER);
+ place_grid(player_ptr, &floor.grid_array[y2b + 1][x], GB_INNER);
}
/* Sometimes shut using secret doors */
/* Occasionally put a "plus" in the center */
else if (one_in_(3)) {
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, xval }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y1b, xval }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2b, xval }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, x1a }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, x2a }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, xval }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y1b, xval }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y2b, xval }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, x1a }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, x2a }), GB_INNER);
}
/* Occasionally put a pillar in the center */
else if (one_in_(3)) {
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, xval }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, xval }), GB_INNER);
}
break;
bool build_type4(PlayerType *player_ptr, dun_data_type *dd_ptr)
{
/* Find and reserve some space in the dungeon. Get center of room. */
- auto *floor_ptr = player_ptr->current_floor_ptr;
- const auto &dungeon = floor_ptr->get_dungeon_definition();
+ auto &floor = *player_ptr->current_floor_ptr;
+ const auto &dungeon = floor.get_dungeon_definition();
int yval;
int xval;
const auto is_pos_found = find_space(player_ptr, dd_ptr, &yval, &xval, 11, 25);
}
/* Choose lite or dark */
- const auto should_brighten = ((floor_ptr->dun_level <= randint1(25)) && dungeon.flags.has_not(DungeonFeatureType::DARKNESS));
+ const auto should_brighten = ((floor.dun_level <= randint1(25)) && dungeon.flags.has_not(DungeonFeatureType::DARKNESS));
/* Large room */
const auto y1_outer = yval - 4;
/* Place a full floor under the room */
for (auto y = y1_outer - 1; y <= y2_outer + 1; y++) {
for (auto x = x1_outer - 1; x <= x2_outer + 1; x++) {
- auto &grid = floor_ptr->get_grid({ y, x });
+ auto &grid = floor.get_grid({ y, x });
place_grid(player_ptr, &grid, GB_FLOOR);
grid.info |= (CAVE_ROOM);
if (should_brighten) {
/* Outer Walls */
for (auto y = y1_outer - 1; y <= y2_outer + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1_outer - 1 }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2_outer + 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1_outer - 1 }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2_outer + 1 }), GB_OUTER);
}
for (auto x = x1_outer - 1; x <= x2_outer + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1_outer - 1, x }), GB_OUTER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2_outer + 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y1_outer - 1, x }), GB_OUTER);
+ place_grid(player_ptr, &floor.get_grid({ y2_outer + 1, x }), GB_OUTER);
}
const auto y1_inner = y1_outer + 2;
/* The inner walls */
for (auto y = y1_inner - 1; y <= y2_inner + 1; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x1_inner - 1 }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x2_inner + 1 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x1_inner - 1 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x2_inner + 1 }), GB_INNER);
}
for (auto x = x1_inner - 1; x <= x2_inner + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y1_inner - 1, x }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ y2_inner + 1, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y1_inner - 1, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y2_inner + 1, x }), GB_INNER);
}
/* Inner room variations */
continue;
}
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
}
}
/* Traps to protect the treasure */
- vault_traps(floor_ptr, yval, xval, 4, 10, 2 + randint1(3));
+ vault_traps(&floor, yval, xval, 4, 10, 2 + randint1(3));
break;
}
/* Large Inner Pillar */
for (auto y = yval - 1; y <= yval + 1; y++) {
for (auto x = xval - 1; x <= xval + 1; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
}
const auto tmp = randint1(2);
for (auto y = yval - 1; y <= yval + 1; y++) {
for (auto x = xval - 5 - tmp; x <= xval - 3 - tmp; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
for (auto x = xval + 3 + tmp; x <= xval + 5 + tmp; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
}
}
/* Long horizontal walls */
for (auto x = xval - 5; x <= xval + 5; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ yval - 1, x }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ yval + 1, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval - 1, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval + 1, x }), GB_INNER);
}
/* Close off the left/right edges */
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, xval - 5 }), GB_INNER);
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, xval + 5 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, xval - 5 }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, xval + 5 }), GB_INNER);
/* Secret doors (random top/bottom) */
place_secret_door(player_ptr, yval - 3 + (randint1(2) * 2), xval - 3, door_type);
for (auto y = y1_inner; y <= y2_inner; y++) {
for (auto x = x1_inner; x <= x2_inner; x++) {
if (0x1 & (x + y)) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, x }), GB_INNER);
}
}
}
vault_monsters(player_ptr, yval, xval + 5, randint1(3));
/* Traps make them entertaining. */
- vault_traps(floor_ptr, yval, xval - 3, 2, 8, randint1(3));
- vault_traps(floor_ptr, yval, xval + 3, 2, 8, randint1(3));
+ vault_traps(&floor, yval, xval - 3, 2, 8, randint1(3));
+ vault_traps(&floor, yval, xval + 3, 2, 8, randint1(3));
/* Mazes should have some treasure too. */
vault_objects(player_ptr, yval, xval, 3);
/* Inner "cross" */
for (auto y = y1_inner; y <= y2_inner; y++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ y, xval }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ y, xval }), GB_INNER);
}
for (auto x = x1_inner; x <= x2_inner; x++) {
- place_grid(player_ptr, &floor_ptr->get_grid({ yval, x }), GB_INNER);
+ place_grid(player_ptr, &floor.get_grid({ yval, x }), GB_INNER);
}
/* Doors into the rooms */
bool build_type11(PlayerType *player_ptr, dun_data_type *dd_ptr)
{
/* Occasional light */
- auto *floor_ptr = player_ptr->current_floor_ptr;
- const auto should_brighten = (randint1(floor_ptr->dun_level) <= 15) && floor_ptr->get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
+ auto &floor = *player_ptr->current_floor_ptr;
+ const auto should_brighten = (randint1(floor.dun_level) <= 15) && floor.get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
const auto rad = randint0(9);
/* Find and reserve some space in the dungeon. Get center of room. */
const auto h4 = randint1(32) - 16;
/* Occasional light */
- auto *floor_ptr = player_ptr->current_floor_ptr;
- const auto should_brighten = (randint1(floor_ptr->dun_level) <= 5) && floor_ptr->get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
+ auto &floor = *player_ptr->current_floor_ptr;
+ const auto should_brighten = (randint1(floor.dun_level) <= 5) && floor.get_dungeon_definition().flags.has_not(DungeonFeatureType::DARKNESS);
const auto rad = randint1(9);
/* Find and reserve some space in the dungeon. Get center of room. */
for (auto x = xval - rad; x <= xval + rad; x++) {
for (auto y = yval - rad; y <= yval + rad; y++) {
/* clear room flag */
- floor_ptr->grid_array[y][x].info &= ~(CAVE_ROOM);
+ floor.grid_array[y][x].info &= ~(CAVE_ROOM);
if (dist2(yval, xval, y, x, h1, h2, h3, h4) <= rad - 1) {
/* inside - so is floor */
}
for (auto y = yval - 2; y <= yval + 2; y++) {
- if (!floor_ptr->get_grid({ y, x }).is_floor()) {
+ if (!floor.get_grid({ y, x }).is_floor()) {
is_empty = false;
break;
}
vault_monsters(player_ptr, yval, xval, randint0(2) + 3);
/* Traps naturally */
- vault_traps(floor_ptr, yval, xval, 4, 4, randint0(3) + 2);
+ vault_traps(&floor, yval, xval, 4, 4, randint0(3) + 2);
}
return true;