static void new_dungeon_level(dungeon_t *d, uint32_t dir) { /* Eventually up and down will be independantly meaningful. * * For now, simply generate a new dungeon. */ switch (dir) { case '<': case '>': new_dungeon(d); break; default: break; } }
struct map_t *map_preset_arena(void) { struct map_t *arena; struct map_t *cave; double **armap; int i; int j; armap = empty_simplex_matrix(FULLSCREEN); for (i=0; i<LINES; i++) { for (j=0; j<COLS; j++) { if (i >= ARENA_H/2 && i <= LINES-ARENA_H/2 && j >= ARENA_W/2 && j <= COLS-ARENA_W/2) armap[i][j] = BEACH_F; else if (i > ISLAND_H_LO && i < ISLAND_H_HI && j > ISLAND_W_LO-2 && j < ISLAND_W_HI) { if (i > ISLAND_H_LO+ISLAND_FAT+5 && i < ISLAND_H_HI-ISLAND_FAT && j < ISLAND_W_LO+ISLAND_FAT+1) { if (j > ISLAND_W_LO+ISLAND_FAT-2) armap[i][j] = BEACH_F; else armap[i][j] = -0.05; } else { armap[i][j] = TERRA_F; } } else armap[i][j] = -0.05; } } arena = new_map(FULLSCREEN); map_gen(arena, armap, MAP_NOSMOOTH); /* Make a cave entrance */ cave = new_dungeon(); put_door(CAVE_DOOR, arena, cave, 1, 1, ARENA_H/2-1, COLS/2, 1, 1, LINES/2-10, COLS/2); cave_connect_door(cave); map_render(arena); map_render(cave); return arena; }