- lisp::ListIterator iter(tiles_lisp);
- while(iter.next()) {
- if(iter.item() == "tile") {
- Tile* tile = new Tile();
- tile->parse(*(iter.lisp()));
- while(tile->id >= tiles.size()) {
- tiles.push_back(0);
- }
- if(tiles[tile->id] != 0) {
- std::cout << "Warning: Tile with ID " << tile->id << " redefined\n";
- }
- tiles[tile->id] = tile;
- } else if(iter.item() == "tilegroup") {
- TileGroup tilegroup;
- const lisp::Lisp* tilegroup_lisp = iter.lisp();
- tilegroup_lisp->get("name", tilegroup.name);
- tilegroup_lisp->get_vector("tiles", tilegroup.tiles);
- tilegroups.insert(tilegroup);
- } else if (iter.item() == "tiles") {
- // List of ids (use 0 if the tile should be ignored)
- std::vector<unsigned int> ids;
- // List of attributes of the tile
- std::vector<unsigned int> attributes;
- std::string image;
+TileSet* TileManager::parse_tileset_definition(const lisp::Lisp& reader)
+{
+ std::auto_ptr<TileSet> result(new TileSet());