Example #1
0
void dump_dungeon(dungeon* d) {
	room* r;
	int h, w;
	printf("Dungeon<%p> {\n", d);
	for (h=0; h<d->height; ++h) {
		for(w=0; w<d->width; ++w) {
			r = &(d->rooms[(h*d->width)+w]);
			printf(" | %c%c%c%c",
				(r->n)?'N':'.',
				(r->s)?'S':'.',
				(r->e)?'E':'.',
				(r->w)?'W':'.');
		}
		printf(" |\n");
	}
	printf(
		"\n"
		"\tLocation: %d\n"
		"\tWidth: %d\n"
		"\tHeight: %d\n"
		"\tDiff: %d\n"
		"\tSpawn: %d\n"
		"\tEnd: %d\n"
		"}\n",
		d->location,
		d->width,
		d->height,
		d->difficulty,
		d->spawn_room,
		d->end_room
	);
	dump_npc(&(d->player));
	dump_room(*(d->cur_room));
}
Example #2
0
void merge()
{
    dump_room();
    int i;

    for(i = 1; i <= num_room; ++i)
    {
        struct room_node* target = room_graph[i].begin;
        int my_size = room_size[i];

        while(target != NULL)
        {
            int target_merge = room_size[target->id] + my_size;
            
            if(target_merge > max_merge)
            {
                printf("Merge: %d %d\n", i, target->id);

                max_merge = target_merge;
                memcpy(&merge_room, target, sizeof(struct room_node));
            }
            else if(target_merge == max_merge)
            {
                if(room_is_greater(target, &merge_room))
                {
                    memcpy(&merge_room, target, sizeof(struct room_node));
                }
            }

            target = target->next;
        }
    }
}