Mountain  1.0.0
Simple C++ 2D Game Framework
grid.hpp
1 #pragma once
2 
3 #include "Mountain/collision/collider.hpp"
4 
5 #include <Maths/vector2i.hpp>
6 
8 
9 namespace Mountain
10 {
11  // TODO - Add a template type instead of bool_t
12 
13  class Grid : public Collider
14  {
15  public:
22 
23  MOUNTAIN_API Grid();
24  MOUNTAIN_API Grid(Vector2i size, Vector2 tileSize);
25  MOUNTAIN_API Grid(Vector2i size, Vector2 tileSize, Vector2 off);
26 
27  // Inherited via Collider
28  MOUNTAIN_API void RenderDebug(const Color& color) const override;
29  [[nodiscard]]
30  MOUNTAIN_API bool_t CheckCollision(Vector2 point) const override;
31  [[nodiscard]]
32  MOUNTAIN_API bool_t CheckCollision(const Hitbox& hitbox) const override;
33  [[nodiscard]]
34  MOUNTAIN_API bool_t CheckCollision(const Circle& circle) const override;
35  [[nodiscard]]
36  MOUNTAIN_API bool_t CheckCollision(const Grid& grid) const override;
37  [[nodiscard]]
38  MOUNTAIN_API bool_t CheckCollision(const ColliderList& list) const override;
39 
40  [[nodiscard]]
41  MOUNTAIN_API float_t Left() const override;
42  [[nodiscard]]
43  MOUNTAIN_API float_t Right() const override;
44  [[nodiscard]]
45  MOUNTAIN_API float_t Top() const override;
46  [[nodiscard]]
47  MOUNTAIN_API float_t Bottom() const override;
48 
49  [[nodiscard]]
50  MOUNTAIN_API float AbsoluteLeft() const override;
51  [[nodiscard]]
52  MOUNTAIN_API float AbsoluteRight() const override;
53  [[nodiscard]]
54  MOUNTAIN_API float AbsoluteTop() const override;
55  [[nodiscard]]
56  MOUNTAIN_API float AbsoluteBottom() const override;
57 
58  [[nodiscard]]
59  MOUNTAIN_API float Width() const override;
60  [[nodiscard]]
61  MOUNTAIN_API float Height() const override;
62  [[nodiscard]]
63  MOUNTAIN_API Vector2 Size() const override;
64 
65  [[nodiscard]]
66  MOUNTAIN_API List<bool_t>& operator[](size_t y);
67  [[nodiscard]]
68  MOUNTAIN_API const List<bool_t>& operator[](size_t y) const;
69 
70  [[nodiscard]]
71  MOUNTAIN_API bool_t At(size_t y, size_t x) const;
72  [[nodiscard]]
73  MOUNTAIN_API bool_t At(Vector2i tilePosition) const;
74 
75  private:
76  void ResizeGrid();
77  };
78 }
Defines the Mountain::List class.
A dynamic array implementation. Wrapper around the std::vector class.
Definition: list.hpp:24
List< List< bool_t > > tiles
The tile array, stored in [y, x] indices.
Definition: grid.hpp:21
The Color struct represents a color in RGBA color space.
Definition: color.hpp:26
Vector2i gridSize
The size of the grid in tiles.
Definition: grid.hpp:17
Vector2 tileSize
The size of a tile in the grid in pixels.
Definition: grid.hpp:19
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22