#include "Set.hpp"
#include "../app/Assets.hpp"
+#include <iosfwd>
#include <set>
#include <vector>
class Simulation {
public:
- explicit Simulation(Body &root, app::Assets &);
+ explicit Simulation(app::Assets &);
~Simulation();
Simulation(const Simulation &) = delete;
public:
void Tick(double dt);
- Body &Root() noexcept { return root; }
- const Body &Root() const noexcept { return root; }
-
app::Assets &Assets() noexcept { return assets; }
const app::Assets &Assets() const noexcept { return assets; }
const Set<Resource> &Resources() const noexcept { return assets.data.resources; }
const std::set<Body *> &Bodies() const noexcept { return bodies; }
const std::set<Planet *> &Planets() const noexcept { return planets; }
const std::set<Sun *> &Suns() const noexcept { return suns; }
+ Planet &PlanetByName(const std::string &);
void SetAlive(creature::Creature *);
std::vector<creature::Creature *> &LiveCreatures() noexcept { return alive; }
const std::vector<Record> &Records() const noexcept { return records; }
void CheckRecords(creature::Creature &) noexcept;
+ void LogRecord(const Record &);
+
+ std::ostream &Log();
private:
- Body &root;
app::Assets &assets;
std::set<Body *> bodies;