1 #ifndef SPACE_UNIVERSE_H_
2 #define SPACE_UNIVERSE_H_
5 #include "../entity/Ship.h"
6 #include "../graphics/Vector.h"
17 Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize);
20 Universe(const Universe &) = delete;
21 Universe &operator =(const Universe &) = delete;
24 const Vector<int> size;
25 const Vector<int> secSize;
26 const Vector<int> areaSize;
34 Sector(const Universe &univ, Vector<int> coords)
35 : univ(univ), coords(coords) { }
38 Vector<int> SectorCoords() const { return coords; }
39 Vector<int> AreaCoords() const { return univ.areaSize * coords; }
41 Area AreaAt(Vector<int> ac) const { return univ.AreaAt(AreaCoords() + ac); }
52 Area(const Universe &univ, Vector<int> coords)
53 : univ(univ), coords(coords) { }
56 Vector<int> SectorCoords() const { return coords / univ.areaSize; }
57 Vector<int> AreaCoords() const { return coords; }
59 Sector ParentSector() const { return univ.SectorAt(SectorCoords()); }
68 Sector SectorAt(Vector<int> coords) const { return Sector(*this, coords); }
69 Area AreaAt(Vector<int> coords) const { return Area(*this, coords); }
72 Ship *AddShip(const Ship &);
73 const std::list<Ship> &Ships() const { return ships; }
75 int AddResource(const Resource &);
76 const Resource &GetResource(int id) const { return resources[id]; }
79 void Update(float deltaT);
82 std::list<Ship> ships;
83 std::vector<Resource> resources;