- tiles.insert(std::make_pair(tile_id, tile));
-
-/* tile_id += tileset_id;
-
- if(tile_id >= int(tiles.size()))
- tiles.resize(tile_id+1);
- tiles[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);
- }
-
- lisp_free(root_obj);
- current_tileset = filename;
-}
-
-void
-TileManager::draw_tile(DrawingContext& context, unsigned int c,
- const Vector& pos, int layer)
-{
- if(c == 0)
- return;
-
- Tile* tile = get(c);
-
- if(!tile->images.size())
- return;
-
- if(tile->images.size() > 1)
- {
- size_t frame
- = ((global_frame_counter*25) / tile->anim_speed) % tile->images.size();
- context.draw_surface(tile->images[frame], pos, layer);
- }
- else if (tile->images.size() == 1)
- {
- context.draw_surface(tile->images[0], pos, layer);