#ifndef GWORM_WORLD_H_
#define GWORM_WORLD_H_
+#include "Entity.h"
#include "../graphics/Color.h"
#include "../graphics/Vector.h"
+#include <list>
#include <vector>
public:
void Update(float dt);
+ bool InBounds(Vector<int> pos) const
+ { return pos.x > 0 && pos.y > 0 && pos.x < size.x && pos.y < size.y; }
int Index(Vector<int> pos) const { return pos.x * size.y + pos.y; }
float MassAt(Vector<int> pos) const { return masses[Index(pos)]; }
Color ColorAt(Vector<int> pos) const { return colors[Index(pos)]; }
void SetColor(Vector<int> pos, Color c) { colors[Index(pos)] = c; }
+ const std::list<Entity> &Entities() const { return entities; }
+ Entity &AddEntity(const Entity &);
+
Vector<float> ForceAt(Vector<float>, float m) const;
+ bool WorldCollision(const Entity &, Vector<float> &) const;
+ Vector<float> NormalAt(Vector<float>) const;
+ bool IsSurface(Vector<int>) const;
private:
Vector<int> size;
std::vector<float> masses;
std::vector<Color> colors;
+ std::list<Entity> entities;
+
};
}