/* * TileManager.h * * Created on: 08.08.2012 * Author: Felix */ #ifndef DG_TILEMANAGER_H_ #define DG_TILEMANAGER_H_ #include #include #include "../World.h" #include "../abstract/Sprite.h" #include "../types/Vector.h" #include "../types/String.h" class World; class Sprite; class TileManager : public sf::Drawable { // Public types. public: enum class Type { FLOOR, WALL }; /** * Uses the length/width of a tile as a unit. */ typedef Vector2i TilePosition; // Public variables. public: /// The size of a single tile (pixels). static const Vector2i TILE_SIZE; // Public functions. public: TileManager(World& world); void setTile(const TilePosition& position, Type type); // Private types. private: class Tile; // Private functions. private: void draw(sf::RenderTarget& target, sf::RenderStates states) const; // Private variables. private: World& mWorld; std::vector > mTiles; }; /** * Holds information about a single tile. */ class TileManager::Tile : public Sprite { // Public functions. public: Tile(Type type, const TilePosition& position, World& world); Type getType() const; TilePosition getTilePosition() const; static String getConfig(Type type); // Private variables. private: Type mType; }; #endif /* DG_TILEMANAGER_H_ */