// // AniScenarioObject.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 24.05.2017. // // #ifndef AniScenarioObject_h #define AniScenarioObject_h #include #include "AniActionData.h" #include "json/document.h" #include #include class ActionParseDelegate; // weird, because the whole parser has been translated from JavaScript class AniScenarioObject { public: std::string AniScenarioObjectName; std::string AniScenarioObjectClassName; AniScenarioObject(){ _customData = NULL; _jsonAniStringUtils = NULL; AniScenarioObjectName = ""; AniScenarioObjectClassName = ""; }; virtual ~AniScenarioObject(){ if(_jsonAniStringUtils){ delete _jsonAniStringUtils; } for(auto pair : _animations){ delete pair.second; } }; // virtual void callFunctionByName(std::string methodName, const rapidjson::Value* arguments, ActionParseDelegate* parseDelegate){ // // do nothing // }; virtual void callFunctionByName(std::string methodName, const rapidjson::Value* arguments, ActionParseDelegate* parseDelegate, std::function callback = [](){}){ // do nothing callback(); }; virtual void setProperty(std::string propertyName, const rapidjson::Value& newValue, ActionParseDelegate* parseDelegate) { // do nothing }; virtual std::string getPropertyAsString(std::string propertyName = ""){ if(propertyName == "objectName"){ return AniScenarioObjectName; } return "NULL"; }; virtual AniScenarioObject* getAniScenarioObjectByName(std::string objectName){ return NULL; }; virtual void insertAnimationWithId(std::string animationId, const rapidjson::Value& animationData){ if(_animations.find(animationId) == _animations.end()){ rapidjson::Value* animationDataCopy = new rapidjson::Value(); animationDataCopy->CopyFrom(animationData, this->getJsonStorage()->GetAllocator()); _animations.insert({animationId, animationDataCopy}); } }; virtual const rapidjson::Value* getAnimationById(std::string animationId){ return _animations[animationId]; }; virtual void setCustomData(void* data){ _customData = data; }; virtual void* getCustomData(){ return _customData; }; virtual std::string getObjectName(){ return AniScenarioObjectName; }; virtual std::string getClassName(){ return AniScenarioObjectClassName; }; protected: rapidjson::Document* _jsonAniStringUtils; std::map _animations; void* _customData; rapidjson::Document* getJsonStorage(){ if(!_jsonAniStringUtils){ _jsonAniStringUtils = new rapidjson::Document(); } return _jsonAniStringUtils; }; }; #endif /* AniScenarioObject_h */