1 #ifndef SPACE_UNIVERSE_H_
2 #define SPACE_UNIVERSE_H_
4 #include "../entity/Ship.h"
5 #include "../graphics/Vector.h"
16 Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize);
19 Universe(const Universe &) = delete;
20 Universe &operator =(const Universe &) = delete;
23 const Vector<int> size;
24 const Vector<int> secSize;
25 const Vector<int> areaSize;
33 Sector(const Universe &univ, Vector<int> coords)
34 : univ(univ), coords(coords) { }
37 Vector<int> SectorCoords() const { return coords; }
38 Vector<int> AreaCoords() const { return univ.areaSize * coords; }
40 Area AreaAt(Vector<int> ac) const { return univ.AreaAt(AreaCoords() + ac); }
51 Area(const Universe &univ, Vector<int> coords)
52 : univ(univ), coords(coords) { }
55 Vector<int> SectorCoords() const { return coords / univ.areaSize; }
56 Vector<int> AreaCoords() const { return coords; }
58 Sector ParentSector() const { return univ.SectorAt(SectorCoords()); }
67 Sector SectorAt(Vector<int> coords) const { return Sector(*this, coords); }
68 Area AreaAt(Vector<int> coords) const { return Area(*this, coords); }
71 Ship *AddShip(const Ship &);
72 const std::list<Ship> &Ships() const { return ships; }
74 int AddResource(const Resource &);
75 const Resource &GetResource(int id) const { return resources[id]; }
78 void Update(float deltaT);
81 std::list<Ship> ships;
82 std::vector<Resource> resources;