- if (strcmp(lisp_symbol(lisp_car(element)), "tilemap") == 0)
- {
- LispReader reader(lisp_cdr(element));
- reader.read_int("width", width);
- reader.read_int("height", height);
- reader.read_int_vector("data", tilemap);
- }
- else if (strcmp(lisp_symbol(lisp_car(element)), "properties") == 0)
- {
- LispReader reader(lisp_cdr(element));
- reader.read_string("name", name, true);
- reader.read_string("music", music);
- reader.read_int("start_pos_x", start_x);
- reader.read_int("start_pos_y", start_y);
- }
- else if (strcmp(lisp_symbol(lisp_car(element)), "levels") == 0)
- {
- lisp_object_t* cur = lisp_cdr(element);
-
- while(!lisp_nil_p(cur))
- {
- lisp_object_t* element = lisp_car(cur);
-
- if (strcmp(lisp_symbol(lisp_car(element)), "special-tile") == 0)
- {
- Level level;
- LispReader reader(lisp_cdr(element));
- level.solved = false;
-
- level.north = true;
- level.east = true;
- level.south = true;
- level.west = true;
-
- reader.read_string("extro-filename", level.extro_filename);
- reader.read_string("map-message", level.display_map_message);
- reader.read_string("next-world", level.next_worldmap);
- reader.read_string("level", level.name, true);
- reader.read_int("x", level.x);
- reader.read_int("y", level.y);
- reader.read_bool("auto-path", &level.auto_path);
- level.swap_x = level.swap_y = -1;
- reader.read_int("swap-x", level.swap_x);
- reader.read_int("swap-y", level.swap_y);
- level.vertical_flip = false;
- reader.read_bool("flip-level", level.vertical_flip);
- level.quit_worldmap = false;
- reader.read_bool("exit-game", level.quit_worldmap);
-
- levels.push_back(level);
- }