- if (strcmp(lisp_symbol(lisp_car(root_obj)), "supertux-tiles") == 0)
- {
- lisp_object_t* cur = lisp_cdr(root_obj);
- int tileset_id = 0;
-
- while(!lisp_nil_p(cur))
- {
- lisp_object_t* element = lisp_car(cur);
-
- if (strcmp(lisp_symbol(lisp_car(element)), "tile") == 0)
- {
- LispReader reader(lisp_cdr(element));
-
- Tile* tile = new Tile;
- int tile_id = tile->read(reader);
-/* if(tile_id < 0) {
- std::cerr
- << "Warning: parse error when reading a tile (id < 0), skipping.\n";
- continue;
- }*/
-
- tiles.insert(std::make_pair(tile_id, tile));
- }
- else if (strcmp(lisp_symbol(lisp_car(element)), "tileset") == 0)
- {
- LispReader reader(lisp_cdr(element));
- std::string filename;
- reader.read_string("file", filename);
- filename = datadir + "/images/tilesets/" + filename;
- load_tileset(filename);
- }
- else if (strcmp(lisp_symbol(lisp_car(element)), "tilegroup") == 0)
- {
- TileGroup new_;
- LispReader reader(lisp_cdr(element));
- reader.read_string("name", new_.name);
- reader.read_int_vector("tiles", new_.tiles);
- if(!tilegroups_)
- tilegroups_ = new std::set<TileGroup>;
- tilegroups_->insert(new_).first;
- }
- else if (strcmp(lisp_symbol(lisp_car(element)), "properties") == 0)
- {
- LispReader reader(lisp_cdr(element));
- reader.read_int("id", tileset_id);
- tileset_id *= 1000;
- }
- else
- {
- std::cerr << "Unknown symbol: " <<
- lisp_symbol(lisp_car(element)) << "\n";
- }
-
- cur = lisp_cdr(cur);
- }
- }
- else
- {
- assert(0);
- }