1 #ifndef BLOBS_CREATURE_CREATURE_HPP_
2 #define BLOBS_CREATURE_CREATURE_HPP_
5 #include "Situation.hpp"
6 #include "../graphics/glm.hpp"
7 #include "../graphics/SimpleVAO.hpp"
32 Creature(const Creature &) = delete;
33 Creature &operator =(const Creature &) = delete;
35 Creature(Creature &&) = delete;
36 Creature &operator =(Creature &&) = delete;
39 void Name(const std::string &n) noexcept { name = n; }
40 const std::string &Name() const noexcept { return name; }
42 void Health(double h) noexcept { health = h; }
43 double Health() const noexcept { return health; }
45 void AddNeed(const Need &n) { needs.push_back(n); }
46 const std::vector<Need> &Needs() const noexcept { return needs; }
50 Situation &GetSituation() noexcept { return situation; }
51 const Situation &GetSituation() const noexcept { return situation; }
53 glm::dmat4 LocalTransform() noexcept;
56 void Draw(app::Assets &, graphics::Viewport &);
61 std::vector<Need> needs;
70 graphics::SimpleVAO<Attributes, unsigned short> vao;
74 /// put creature on planet and configure it to (hopefully) survive
75 void Spawn(Creature &, world::Planet &, app::Assets &);