- start = 1;
- world.monster = 0;
- while (1) {
- test = read_uint16_bigendian(file);
- if (0 == test)
- break;
- if (start) {
- monster = malloc(sizeof(struct Monster));
- world.monster = monster;
- start = 0; }
- else {
- monster->next = malloc(sizeof(struct Monster));
- monster = monster->next; }
- monster->name = 'M';
- monster->pos.y = test - 1;
- monster->pos.x = read_uint16_bigendian(file) - 1; }
- if (!start)
- monster->next = 0;
- start = 1;
- world.item = 0;
- while (1) {
- test = read_uint16_bigendian(file);
- if (0 == test)
- break;
- if (start) {
- item = malloc(sizeof(struct Item));
- world.item = item;
- start = 0; }
- else {
- item->next = malloc(sizeof(struct Item));
- item = item->next; }
- item->name = '#';
- item->pos.y = test - 1;
- item->pos.x = read_uint16_bigendian(file) - 1; }
- if (!start)
- item->next = 0;
+ read_map_objects (&world.monster, file, sizeof(struct Monster), read_map_objects_monsterdata);
+ read_map_objects (&world.item, file, sizeof(struct Item), readwrite_map_objects_dummy);