LPCGame
A Simple 2d Game Engine
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
map.h
1 #ifndef MAP_H
2 #define MAP_H
3 
4 #include <vector>
5 #include <string>
6 #include <set>
7 #include <memory>
8 #include "external/json/json.h"
9 #include "base.h"
10 #include "image.h"
11 #include "tile.h"
12 #include "camera.h"
13 #include "tileset.h"
14 
16 
19 class Map {
20 public:
21  Map();
22  ~Map();
27  void Draw(std::weak_ptr<Camera> cam);
40  int CalculateIndex(int x, int y, int w, int h) const;
47  std::set<int> CalculateIndex(Recti area) const;
54  CollisionMap GetCollisionMap(const Recti &target, int distance = 2);
56  Recti Box() const;
58  void LoadTileSet(std::shared_ptr<TileSet> ts) { mTileSet = ts; }
60  std::string File() const;
65  Json::Value Save();
70  void Load(Json::Value val);
75  void Load(const std::string &file);
76 
77 protected:
78  std::vector<Tile> mTiles;
79  Recti mBox;
80  std::shared_ptr<TileSet> mTileSet;
81  std::string mFile;
82  //How does this help? It's a pointer to the same camera, so it'll always be equal
83  Camera *lastCamera;
84  std::set<int> indices;
85 };
86 
87 #endif