X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FUniverse.h;h=c4754bd0c718b0100baddd9584a6fbe50eb50d5d;hb=dd2641dd1b87a0ee3ae27f000ea9527ee05fddbd;hp=55b86f95122b3d51c2657ecce125bfcd6c20e865;hpb=61c2d30a60d586cbe63885885c6a373c7713af1e;p=space.git diff --git a/src/world/Universe.h b/src/world/Universe.h index 55b86f9..c4754bd 100644 --- a/src/world/Universe.h +++ b/src/world/Universe.h @@ -1,10 +1,13 @@ #ifndef SPACE_UNIVERSE_H_ #define SPACE_UNIVERSE_H_ -#include "../entity/Entity.h" +#include "Resource.h" +#include "../entity/Ship.h" #include "../graphics/Vector.h" #include +#include +#include namespace space { @@ -22,8 +25,11 @@ public: const Vector size; const Vector secSize; const Vector areaSize; + const Vector bounds; public: + using Env = std::map; + class Area; class Sector { @@ -55,6 +61,7 @@ public: Vector AreaCoords() const { return coords; } Sector ParentSector() const { return univ.SectorAt(SectorCoords()); } + const Env &GetEnv() const { return univ.EnvAt(coords); } private: const Universe &univ; @@ -65,16 +72,27 @@ public: public: Sector SectorAt(Vector coords) const { return Sector(*this, coords); } Area AreaAt(Vector coords) const { return Area(*this, coords); } + const Env &EnvAt(Vector coords) const { return env[coords.x * bounds.y + coords.y]; } public: - Entity *AddEntity(const Entity &); - const std::list &Entities() const { return entities; } + Ship *AddShip(const Ship &); + const std::list &Ships() const { return ships; } + + int AddResource(const Resource &); + const Resource &GetResource(int id) const { return resources[id]; } + + void DumpEnv(int res, Vector coords, float amount); + void DumpEnv(int res, Vector coords, float amount) { + DumpEnv(res, Vector(coords), amount); + } public: void Update(float deltaT); private: - std::list entities; + std::list ships; + std::vector resources; + std::vector env; };