X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FSimulation.hpp;h=50f06b4ca693456505662659d1aae938e85e932e;hb=9bc766beab23c8c5f507ca3c7abce24049e6229e;hp=31489c6de7aef91e20c93c1164771260eb251e62;hpb=dd8b3145a03ed676b0ae6311c29fc3d68f666b15;p=blobs.git diff --git a/src/world/Simulation.hpp b/src/world/Simulation.hpp index 31489c6..50f06b4 100644 --- a/src/world/Simulation.hpp +++ b/src/world/Simulation.hpp @@ -1,13 +1,19 @@ #ifndef BLOBS_WORLD_SIMULATION_HPP_ #define BLOBS_WORLD_SIMULATION_HPP_ +#include "Record.hpp" #include "Set.hpp" #include "../app/Assets.hpp" +#include #include +#include namespace blobs { +namespace creature { + class Creature; +} namespace world { class Body; @@ -31,10 +37,6 @@ public: public: void Tick(double dt); - void AddBody(Body &); - void AddPlanet(Planet &); - void AddSun(Sun &); - Body &Root() noexcept { return root; } const Body &Root() const noexcept { return root; } @@ -43,19 +45,43 @@ public: const Set &Resources() const noexcept { return assets.data.resources; } const Set &TileTypes() const noexcept { return assets.data.tile_types; } + void AddBody(Body &); + void AddPlanet(Planet &); + void AddSun(Sun &); + const std::set &Bodies() const noexcept { return bodies; } const std::set &Planets() const noexcept { return planets; } const std::set &Suns() const noexcept { return suns; } + void SetAlive(creature::Creature *); + std::vector &LiveCreatures() noexcept { return alive; } + const std::vector &LiveCreatures() const noexcept { return alive; } + + void SetDead(creature::Creature *); + std::vector &DeadCreatures() noexcept { return dead; } + const std::vector &DeadCreatures() const noexcept { return dead; } + double Time() const noexcept { return time; } + const std::vector &Records() const noexcept { return records; } + void CheckRecords(creature::Creature &) noexcept; + void LogRecord(const Record &rold, const Record &rnew); + + std::ostream &Log(); + private: Body &root; app::Assets &assets; + std::set bodies; std::set planets; std::set suns; + + std::vector alive; + std::vector dead; + double time; + std::vector records; };