1 #ifndef SPACE_UNIVERSE_H_
2 #define SPACE_UNIVERSE_H_
4 #include "../entity/Entity.h"
5 #include "../math/Vector.h"
15 Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize);
18 Universe(const Universe &) = delete;
19 Universe &operator =(const Universe &) = delete;
22 const Vector<int> size;
23 const Vector<int> secSize;
24 const Vector<int> areaSize;
32 Sector(const Universe &univ, Vector<int> coords)
33 : univ(univ), coords(coords) { }
36 Vector<int> SectorCoords() const { return coords; }
37 Vector<int> AreaCoords() const { return univ.areaSize * coords; }
39 Area AreaAt(Vector<int> ac) const { return univ.AreaAt(AreaCoords() + ac); }
50 Area(const Universe &univ, Vector<int> coords)
51 : univ(univ), coords(coords) { }
54 Vector<int> SectorCoords() const { return coords / univ.areaSize; }
55 Vector<int> AreaCoords() const { return coords; }
57 Sector ParentSector() const { return univ.SectorAt(SectorCoords()); }
66 Sector SectorAt(Vector<int> coords) const { return Sector(*this, coords); }
67 Area AreaAt(Vector<int> coords) const { return Area(*this, coords); }
70 Entity *AddEntity(const Entity &);
71 const std::list<Entity> &Entities() const { return entities; }
74 void Update(float deltaT);
77 std::list<Entity> entities;