]> git.localhorst.tv Git - blobs.git/blob - src/creature/Situation.hpp
fix resource locator
[blobs.git] / src / creature / Situation.hpp
1 #ifndef BLOBS_CREATURE_SITUATION_HPP_
2 #define BLOBS_CREATURE_SITUATION_HPP_
3
4 #include "../math/glm.hpp"
5
6
7 namespace blobs {
8 namespace world {
9         class Planet;
10         class Tile;
11         class TileType;
12 }
13 namespace creature {
14
15 class Situation {
16
17 public:
18         Situation();
19         ~Situation();
20
21         Situation(const Situation &) = delete;
22         Situation &operator =(const Situation &) = delete;
23
24         Situation(Situation &&) = delete;
25         Situation &operator =(Situation &&) = delete;
26
27 public:
28         bool OnPlanet() const noexcept;
29         world::Planet &GetPlanet() const noexcept { return *planet; }
30         bool OnSurface() const noexcept;
31         int Surface() const noexcept { return surface; }
32         const glm::dvec3 &Position() const noexcept { return position; }
33         bool OnTile() const noexcept;
34         glm::ivec2 SurfacePosition() const noexcept;
35         world::Tile &GetTile() const noexcept;
36         const world::TileType &GetTileType() const noexcept;
37
38         void Move(const glm::dvec3 &dp) noexcept;
39         void SetPlanetSurface(world::Planet &, int srf, const glm::dvec3 &pos) noexcept;
40
41 public:
42         world::Planet *planet;
43         glm::dvec3 position;
44         int surface;
45         enum {
46                 LOST,
47                 PLANET_SURFACE,
48         } type;
49
50 };
51
52 }
53 }
54
55 #endif