]> git.localhorst.tv Git - orbi.git/blob - src/world/World.h
initial collision tests
[orbi.git] / src / world / World.h
1 #ifndef ORBI_WORLD_H_
2 #define ORBI_WORLD_H_
3
4 #include "Entity.h"
5 #include "Tile.h"
6 #include "../graphics/Vector.h"
7
8 #include <list>
9 #include <vector>
10
11
12 namespace orbi {
13
14 class World {
15
16 public:
17         World(Vector<int> size);
18
19 public:
20         Vector<int> Size() const { return size; }
21
22 public:
23         void Update(int dt);
24
25         bool InBounds(Vector<int> pos) const
26                 { return pos.x > 0 && pos.y > 0 && pos.x < size.x && pos.y < size.y; }
27         int Index(Vector<int> pos) const { return pos.y * size.x + pos.x; }
28
29         Tile &TileAt(Vector<int> pos) { return tiles[Index(pos)]; }
30         const Tile &TileAt(Vector<int> pos) const { return tiles[Index(pos)]; }
31         void SetTile(Vector<int> pos, const Tile &t) { tiles[Index(pos)] = t; }
32
33         const std::list<Entity> &Entities() const { return entities; }
34         Entity &AddEntity(const Entity &);
35
36 private:
37         Vector<int> size;
38         int count;
39
40         Vector<float> gravity;
41         Vector<float> terminal;
42
43         std::vector<Tile> tiles;
44
45         std::list<Entity> entities;
46
47 };
48
49 }
50
51 #endif