void init_dungeon(dungeon_t *d) { empty_dungeon(d); memset(&d->next_turn, 0, sizeof (d->next_turn)); heap_init(&d->next_turn, compare_characters_by_next_turn, character_delete); }
int gen_dungeon(dungeon_t *d) { /* pair_t p1, p2; p1[dim_x] = rand_range(1, 158); p1[dim_y] = rand_range(1, 94); p2[dim_x] = rand_range(1, 158); p2[dim_y] = rand_range(1, 94); */ empty_dungeon(d); /* connect_two_points_recursive(d, p1, p2); return 0; */ do { make_rooms(d); } while (place_rooms(d)); connect_rooms(d); place_stairs(d); return 0; }
int gen_dungeon(dungeon_t *d) { empty_dungeon(d); do { make_rooms(d); } while (place_rooms(d)); connect_rooms(d); place_stairs(d); return 0; }
static int place_rooms(dungeon_t *d) { pair_t p; uint32_t i; int success; room_t *r; for (success = 0; !success; ) { success = 1; for (i = 0; success && i < d->num_rooms; i++) { r = d->rooms + i; r->position[dim_x] = 1 + rand() % (DUNGEON_X - 2 - r->size[dim_x]); r->position[dim_y] = 1 + rand() % (DUNGEON_Y - 2 - r->size[dim_y]); for (p[dim_y] = r->position[dim_y] - 1; success && p[dim_y] < r->position[dim_y] + r->size[dim_y] + 1; p[dim_y]++) { for (p[dim_x] = r->position[dim_x] - 1; success && p[dim_x] < r->position[dim_x] + r->size[dim_x] + 1; p[dim_x]++) { if (mappair(p) >= ter_floor) { success = 0; empty_dungeon(d); } else if ((p[dim_y] != r->position[dim_y] - 1) && (p[dim_y] != r->position[dim_y] + r->size[dim_y]) && (p[dim_x] != r->position[dim_x] - 1) && (p[dim_x] != r->position[dim_x] + r->size[dim_x])) { mappair(p) = ter_floor_room; hardnesspair(p) = 0; } } } } } return 0; }
void init_dungeon(dungeon_t *d) { empty_dungeon(d); memset(&d->events, 0, sizeof (d->events)); heap_init(&d->events, compare_events, event_delete); }
void init_dungeon(dungeon_t *d) { empty_dungeon(d); }