void load_dat_level (int number) { char *filename; xasprintf (&filename, levels_dat_filename); int8_t *dat = load_resource (filename, (load_resource_f) load_file); if (! dat) error (-1, 0, "cannot read dat level file %s", filename); al_free (filename); int8_t *offset; int16_t size; dat_getres (dat, 2000 + number, &offset, &size); if (! offset) error (-1, 0, "incorrect format for dat level file %s", filename); memcpy (&lv, offset, sizeof (lv)); interpret_legacy_level (number); legacy_level.next_level = next_dat_level; al_free (dat); }
struct level * load_dat_level (struct level *l, int n) { char *filename; xasprintf (&filename, levels_dat_filename); int8_t *dat = load_resource (filename, (load_resource_f) load_file); if (! dat) { error (0, 0, "cannot read dat level file %s", filename); return NULL; } al_free (filename); int8_t *offset; int16_t size; dat_getres (dat, 2000 + n, &offset, &size); if (! offset) { error (0, 0, "incorrect format for dat level file %s", filename); return NULL; } memcpy (&lv, offset, sizeof (lv)); interpret_legacy_level (l, n); l->next_level = next_dat_level; al_free (dat); return l; }