#include "Universe.h"
-#include "Sector.h"
-
#include <cstring>
#include <memory>
namespace space {
-Universe::Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize, int numres)
+Universe::Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize)
: size(size)
, secSize(secSize)
-, areaSize(areaSize)
-, numres(numres)
-, total(size.x * size.y)
-, sec_begin(reinterpret_cast<Sector *>(new char[total * sizeof(Sector)]))
-, sec_end(sec_begin + total) {
- for (Sector *i = sec_begin; i < sec_end; ++i) {
- new (i) Sector(secSize, numres);
- }
+, areaSize(areaSize) {
+
}
Universe::~Universe() {
- delete[] reinterpret_cast<char *>(sec_begin);
+
}
-Entity *Universe::AddEntity(const Entity &e) {
- entities.emplace_back(e);
- return &entities.back();
+Ship *Universe::AddShip(const Ship &s) {
+ ships.emplace_back(s);
+ return &ships.back();
}
void Universe::Update(float delta) {
- for (Entity &e : entities) {
- e.Update(delta);
- while (e.pos.x > areaSize.x) {
- e.pos.x -= areaSize.x;
- ++e.area.x;
- }
- while (e.pos.x < 0) {
- e.pos.x += areaSize.x;
- --e.area.x;
- }
- while (e.pos.y > areaSize.y) {
- e.pos.y -= areaSize.y;
- ++e.area.y;
- }
- while (e.pos.y < 0) {
- e.pos.y += areaSize.y;
- --e.area.y;
- }
+ for (Ship &s : ships) {
+ s.Update(delta);
}
}