LPCGame
A Simple 2d Game Engine
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
tileset.h
1 #ifndef TILESET_H
2 #define TILESET_H
3 
4 #include <string>
5 #include <vector>
6 #include <map>
7 #include <unordered_map>
8 #include <memory>
9 #include <SDL.h>
10 #include "external/json/json.h"
11 #include "rect.h"
12 #include "tile.h"
13 #include "vectors.h"
14 
18 typedef std::unordered_map<std::string, Tile> mTileSetMap;
19 typedef std::unordered_map<std::string, std::shared_ptr<SDL_Texture>> mImageSetMap;
20 class TileSet {
21 public:
22  TileSet();
28  TileSet(const std::string &file);
32  ~TileSet();
38  virtual void Add(const std::string &file);
45  virtual SDL_Texture* Texture(const std::string &tile);
52  virtual Recti Clip(const std::string &tile);
59  virtual std::string File(const std::string &tile);
65  virtual bool Solid(const std::string &tile);
70  int Size() { return mTileSet.size(); }
75  mTileSetMap::iterator Begin() { return mTileSet.begin(); }
80  mTileSetMap::iterator End() { return mTileSet.end(); }
85  virtual void Load(Json::Value val);
90  Json::Value Save();
91 
92 private:
94  TileSet(const TileSet &a);
95  TileSet& operator = (const TileSet &a);
96 
97  void ParseImageJson(Json::Value val, const std::string &file);
98 
99 protected:
100  mTileSetMap mTileSet;
101  mImageSetMap mImageSet;
102  mTileSetMap::iterator mTileSetBegin;
103  mTileSetMap::iterator mTileSetEnd;
104  mImageSetMap::iterator mImageSetBegin;
105  mImageSetMap::iterator mImageSetEnd;
106 
107  SDL_Texture* lastTexture;
108  std::string lastTextureName;
109 
110  Tile lastTile;
111  std::string lastTileName;
112 
113 
114 };
115 
116 #endif