X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftilemap.h;h=8aa2b481a21f6a772d10d841ace1e101c680ac75;hb=f41a5719a2dc1a50674c69fa511c38a152cc4b03;hp=18340aae874e8ee8f2df94efb557f4e6892c7a9e;hpb=308f11e38981077626fe0ea9887094f3c28b02f9;p=supertux.git diff --git a/src/tilemap.h b/src/tilemap.h index 18340aae8..8aa2b481a 100644 --- a/src/tilemap.h +++ b/src/tilemap.h @@ -21,14 +21,20 @@ #define SUPERTUX_TILEMAP_H #include +#include -#include "game_object.h" +#include "special/game_object.h" #include "serializable.h" -#include "vector.h" +#include "math/vector.h" + +using namespace SuperTux; + +namespace SuperTux { +class LispReader; +} class Level; class TileManager; -class LispReader; class Tile; /** @@ -39,6 +45,7 @@ class TileMap : public GameObject, public Serializable public: TileMap(); TileMap(LispReader& reader); + TileMap(int layer_, bool solid_, size_t width_, size_t height_); virtual ~TileMap(); virtual void write(LispWriter& writer); @@ -54,28 +61,33 @@ public: */ void resize(int newwidth, int newheight); + /** Flip the all tile map vertically. The purpose of this is to let + player to play the same level in a different way :) */ + void do_vertical_flip(); + size_t get_width() const { return width; } size_t get_height() const { return height; } + + int get_layer() const + { return layer; } bool is_solid() const { return solid; } - unsigned int get_tile_id_at(const Vector& pos) const; - /// returns tile in row y and column y (of the tilemap) - Tile* get_tile(int x, int y) const; + const Tile* get_tile(int x, int y) const; /// returns tile at position pos (in world coordinates) - Tile* get_tile_at(const Vector& pos) const; + const Tile* get_tile_at(const Vector& pos) const; - void change(int x, int y, unsigned int newtile); + void change(int x, int y, uint32_t newtile); - void change_at(const Vector& pos, unsigned int newtile); + void change_at(const Vector& pos, uint32_t newtile); -public: - std::vector tiles; +private: + std::vector tiles; private: TileManager* tilemanager; @@ -83,6 +95,8 @@ private: float speed; int width, height; int layer; + + bool vertical_flip; }; #endif /*SUPERTUX_TILEMAP_H*/