// // HLayoutParser.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 16.05.2017. // // #ifndef HLayoutParser_h #define HLayoutParser_h #include "json/document.h" #include "HLayoutObject.h" class HLayoutViewInterface { public: virtual void addLayer(cocos2d::Layer*){ } virtual void addObject(std::string objectName, cocos2d::Node* object){ } virtual bool touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType){ return false; } virtual void setupBackgroundMusic(std::string backgroundMusicPath){ } virtual HLayoutObject* getObjectByName(std::string objectName){ return NULL; } }; class HLayoutParser { public: static HLayoutParser& getInstance() { static HLayoutParser instance; return instance; } std::string loadJSONFromFile(const std::string& jsonFilePath); void loadLayoutFromJSONFile(const std::string& jsonFilePath, HLayoutViewInterface* scene); void loadLayoutFromDownloadedJSONFile(const std::string& jsonFilePath, HLayoutViewInterface* scene); void loadLayoutFromJSONString(const std::string& jsonString, HLayoutViewInterface* scene); private: HLayoutParser() { _parsedDocument = NULL; } CC_DISALLOW_COPY_AND_ASSIGN(HLayoutParser); rapidjson::Document* _parsedDocument; void parseChildObjects(HLayoutViewInterface* scene, rapidjson::Value& nodeData, cocos2d::Node* createdNode, std::string objectLayoutsFolder = "", std::string resFolder = "", std::string altResFolder = "", bool isTopLayer = false); cocos2d::Node* parseObject(HLayoutViewInterface* scene, rapidjson::Value& nodeData, cocos2d::Node* parentNode, std::string objectLayoutsFolder = "", std::string resFolder = "", std::string altResFolder = "", bool isTopLayer = false); const rapidjson::Value* getValueForKey(std::string key, const rapidjson::Value& mainNodeData); }; #endif /* HLayoutParser_h */