- unsigned char i;
- start = 1;
- world.monster = 0;
- for (i = 0; i < n_monsters; i++) {
- if (start) {
- monster = malloc(sizeof(struct Monster));
- world.monster = monster;
- start = 0; }
- else {
- monster->next = malloc(sizeof(struct Monster));
- monster = monster->next; }
- for (monster->pos.y = monster->pos.x = 0; 0 == is_passable(&map, monster->pos);) {
- monster->pos.y = rrand(0, 0) % map.size.y;
- monster->pos.x = rrand(0, 0) % map.size.x; }
- monster->name = 'M'; }
- if (!start)
- monster->next = 0;
- start = 1;
- world.item = 0;
- for (i = 0; i < n_items; i++) {
- if (start) {
- item = malloc(sizeof(struct Item));
- world.item = item;
- start = 0; }
- else {
- item->next = malloc(sizeof(struct Item));
- item = item->next; }
- for (item->pos.y = item->pos.x = 0; 0 == is_passable(&map, item->pos);) {
- item->pos.y = rrand(0, 0) % map.size.y;
- item->pos.x = rrand(0, 0) % map.size.x; }
- item->name = '#'; }
- if (!start)
- item->next = 0; }
+ build_map_objects (&world.monster, n_monsters, sizeof(struct Monster), build_map_objects_monsterdata, &map);
+ build_map_objects (&world.item, n_items, sizeof(struct Item), build_map_objects_itemdata, &map); }