X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FWorld.h;h=038f9dcce39db83362bea625a72f13384f041ef8;hb=a8523bee4fc349a800f5f6d67b470c3a801beaa9;hp=3483f66fba9fe9a205c528d890179aab8fc07e7b;hpb=4a51a83bdff30d1e25a5867cfb19936adc0034b1;p=orbi.git diff --git a/src/world/World.h b/src/world/World.h index 3483f66..038f9dc 100644 --- a/src/world/World.h +++ b/src/world/World.h @@ -1,6 +1,7 @@ #ifndef ORBI_WORLD_H_ #define ORBI_WORLD_H_ +#include "AABB.h" #include "Entity.h" #include "Tile.h" #include "../graphics/Vector.h" @@ -20,7 +21,7 @@ public: Vector Size() const { return size; } public: - void Update(int dt); + void Update(float dt); bool InBounds(Vector pos) const { return pos.x > 0 && pos.y > 0 && pos.x < size.x && pos.y < size.y; } @@ -29,21 +30,29 @@ public: Tile &TileAt(Vector pos) { return tiles[Index(pos)]; } const Tile &TileAt(Vector pos) const { return tiles[Index(pos)]; } void SetTile(Vector pos, const Tile &t) { tiles[Index(pos)] = t; } + const AABB &TileShapeAt(Vector pos) const; const std::list &Entities() const { return entities; } Entity &AddEntity(const Entity &); +private: + void BoundsCollision(Entity &, float dt); + void TileCollision(Entity &, float dt); + private: Vector size; int count; Vector gravity; Vector terminal; + float fixSpeed; std::vector tiles; std::list entities; + mutable AABB tileShape; + }; }