9 Universe::Universe(Vector<int> size, Vector<int> secSize, Vector<int> areaSize)
13 , bounds(size * secSize * areaSize)
14 , env(bounds.x * bounds.y) {
18 Universe::~Universe() {
23 Ship *Universe::AddShip(const Ship &s) {
24 ships.emplace_back(s);
28 int Universe::AddResource(const Resource &r) {
29 resources.emplace_back(r);
30 resources.back().id = resources.size();
31 return resources.size();
35 void Universe::DumpEnv(int res, Vector<int> coords, float amount) {
36 if (coords.x < 0) coords.x = 0;
37 if (coords.x > bounds.x) coords.x = bounds.x - 1;
38 if (coords.y < 0) coords.y = 0;
39 if (coords.y > bounds.x) coords.y = bounds.y - 1;
41 int index = coords.x * bounds.y + coords.y;
43 Env &point = env[index];
44 Env::iterator entry(point.find(res));
46 if (entry == point.end()) {
47 point.emplace(res, amount);
49 entry->second += amount;
54 void Universe::Update(float delta) {
55 for (Ship &s : ships) {