// // LayoutObject.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 16.05.2017. // // #ifndef LayoutObject_h #define LayoutObject_h #include "json/document.h" #include "ui/CocosGUI.h" #include "ScenarioObject.h" #include "JSONParseUtils.h" class LayoutViewInterface; class LayoutObject : public ScenarioObject { public: std::string className; std::string objectName; cocos2d::Point originalPosition; virtual ~LayoutObject(); virtual void loadPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = "") = 0; virtual void loadCommonPropertiesFromJSON(const rapidjson::Value& jsonValue, LayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = ""); virtual void prepareSize(const rapidjson::Value& jsonValue, float& width, float& height); virtual bool isWidget() { return false; }; // for widgets virtual void setOnTouchBeganCallback(std::function callback){}; virtual void setOnTouchEndedCallback(std::function callback){}; virtual void setOnTouchCancelledCallback(std::function callback){}; // ScenarioObject virtual std::string getObjectName(){ return objectName; }; virtual std::string getClassName(){ return className; }; virtual std::string getPropertyAsString(std::string propertyName = ""){ if(propertyName == "objectName"){ return objectName; } return "NULL"; }; virtual void animate(){ if(_activationAnimation != nullptr){ animate(_activationAnimation); } } protected: rapidjson::Value* _activationAnimation; virtual float animate(rapidjson::Value* animationData); }; #endif /* LayoutObject_h */