From 56d623f4a978f212a52348b46af1a354d6d23ee6 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Thu, 21 Sep 2017 01:10:41 +0100 Subject: Working on spritesheet --- yage/base/spritesheet.h | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'yage/base/spritesheet.h') diff --git a/yage/base/spritesheet.h b/yage/base/spritesheet.h index 763ad2d5..60c98840 100644 --- a/yage/base/spritesheet.h +++ b/yage/base/spritesheet.h @@ -11,6 +11,8 @@ #include "texture.h" +#include + #include #include @@ -26,12 +28,45 @@ struct Coordinate { int width; int height; + Coordinate() = default; + Coordinate(int x_i, int y_i, int width_i, int height_i) : x(x_i), y(y_i), width(width_i), height(height_i) { } }; +typedef std::map SpriteMap; + +class SpriteSheetHandler + : public rapidjson::BaseReaderHandler, SpriteSheetHandler> +{ +public: + bool Null(); + bool Bool(bool b); + bool Int(int i); + bool Uint(unsigned u); + bool Int64(int64_t i); + bool Uint64(uint64_t u); + bool Double(double d); + bool String(const char *str, rapidjson::SizeType length, bool copy); + + bool Key(const char *str, rapidjson::SizeType length, bool copy); + bool StartObject(); + bool EndObject(rapidjson::SizeType memberCount); + bool StartArray(); + bool EndArray(rapidjson::SizeType memberCount); + + SpriteMap spriteMap() const; + +private: + std::string current_key_; + int depth_; + SpriteMap map_; + + bool handleNumber(int i); +}; + } // namespace details class SpriteSheet @@ -43,7 +78,7 @@ public: private: Texture texture_; - std::map fileLocations_; + details::SpriteMap fileLocations_; }; } // namespace yage -- cgit