GameKit  0.0.1a
C++ gamedev tools
Tilemap.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: Tilemap.hpp
5  *
6  * Description:
7  *
8  * Created: 15/02/2019 19:17:12
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_TILEMAP_HPP_
15 #define GK_TILEMAP_HPP_
16 
17 #include "gk/gl/Transformable.hpp"
20 #include "gk/graphics/Tileset.hpp"
21 
22 namespace gk {
23 
24 class Tilemap : public gk::IDrawable, public gk::Transformable {
25  public:
26  Tilemap(u16 width, u16 height, Tileset &tileset, const std::vector<std::vector<u16>> &data);
27 
28  void reset();
29 
30  void update();
31 
32  void updateTiles();
33 
34  u16 getTile(u16 tileX, u16 tileY, u8 layer = 0);
35  void setTile(u16 tileX, u16 tileY, u16 id, bool write = true, bool persistent = false);
36 
37  bool inTile(float x, float y, u16 tileID);
38 
39  u16 width() const { return m_width; }
40  u16 height() const { return m_height; }
41 
42  u8 layerCount() const { return m_data.size(); }
43 
44  Tileset &tileset() { return m_tileset; }
45  void setTilesetOffset(u16 tilesetOffset) { m_tilesetOffset = tilesetOffset; }
46 
47  protected:
48  void draw(gk::RenderTarget &target, gk::RenderStates states) const override;
49 
50  private:
52  u16 m_tilesetOffset = 0; // FIXME
53 
54  u16 m_width = 0;
56 
57  std::vector<std::vector<u16>> m_baseData;
58  std::vector<std::vector<u16>> m_data;
59 
62 };
63 
64 } // namespace gk
65 
66 #endif // GK_TILEMAP_HPP_
u16 getTile(u16 tileX, u16 tileY, u8 layer=0)
Definition: Tilemap.cpp:60
void updateTiles()
Definition: Tilemap.cpp:48
u16 m_tilesetOffset
Definition: Tilemap.hpp:52
Tileset & m_tileset
Definition: Tilemap.hpp:51
Tilemap(u16 width, u16 height, Tileset &tileset, const std::vector< std::vector< u16 >> &data)
Definition: Tilemap.cpp:21
TilemapRenderer m_renderer
Definition: Tilemap.hpp:61
TilemapAnimator m_animator
Definition: Tilemap.hpp:60
u16 width() const
Definition: Tilemap.hpp:39
unsigned short u16
Definition: IntTypes.hpp:22
Tileset & tileset()
Definition: Tilemap.hpp:44
unsigned char u8
Definition: IntTypes.hpp:21
u16 m_height
Definition: Tilemap.hpp:55
void reset()
Definition: Tilemap.cpp:34
std::vector< std::vector< u16 > > m_baseData
Definition: Tilemap.hpp:57
void setTile(u16 tileX, u16 tileY, u16 id, bool write=true, bool persistent=false)
Definition: Tilemap.cpp:68
void setTilesetOffset(u16 tilesetOffset)
Definition: Tilemap.hpp:45
std::vector< std::vector< u16 > > m_data
Definition: Tilemap.hpp:58
Abstract base class for objects that can be drawn to a render target.
Definition: IDrawable.hpp:25
u16 height() const
Definition: Tilemap.hpp:40
void update()
Definition: Tilemap.cpp:38
u8 layerCount() const
Definition: Tilemap.hpp:42
bool inTile(float x, float y, u16 tileID)
Definition: Tilemap.cpp:78
u16 m_width
Definition: Tilemap.hpp:54
void draw(gk::RenderTarget &target, gk::RenderStates states) const override
Draw the object to a render target.
Definition: Tilemap.cpp:42