123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include <string>
- #include <ClanLib/Core/System/system.h>
- #include <assert.h>
- #include <iostream>
- #include "globals.hpp"
- #include "string_converter.hpp"
- #include "tile.hpp"
- #include "tileset.hpp"
- typedef std::vector<Tile*> Tiles;
- typedef std::vector<int> TileIds;
- typedef Tiles::iterator iterator;
- class TilesetImpl
- {
- public:
- TilesetImpl()
- {
- }
- ~TilesetImpl()
- {
- for(Tiles::iterator i = tiles.begin(); i != tiles.end(); ++i)
- {
- delete *i;
- }
- }
- TileIds tile_ids;
- Tiles tiles;
- int tile_size;
- };
- Tileset::Tileset()
- : impl(new TilesetImpl())
- {
- impl->tile_size = 1;
- }
- Tileset::Tileset(int tile_size_)
- : impl(new TilesetImpl())
- {
- assert(tile_size_ > 0);
- impl->tile_size = tile_size_;
- }
- Tileset::~Tileset()
- {
- }
- void
- Tileset::add_tile(int id, Tile* tile)
- {
-
- if (id >= int(impl->tiles.size()))
- impl->tiles.resize(id+1, 0);
- if (tile)
- impl->tiles[id] = new Tile(*tile);
- else
- impl->tiles[id] = 0;
- impl->tile_ids.push_back(id);
- }
- Tile*
- Tileset::create (int id)
- {
- if (id >= 0 && id < int(impl->tiles.size()))
- return impl->tiles[id];
- else
- return 0;
- }
- int
- Tileset::get_tile_size() const
- {
- return impl->tile_size;
- }
- std::vector<int>
- Tileset::get_tiles() const
- {
- return impl->tile_ids;
- }
|