// // ActionSequenceHandler.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 29.06.2017. // // #ifndef ActionSequenceHandler_h #define ActionSequenceHandler_h #include "ActionParser.h" #include "json/document.h" #include "ScenarioObject.h" class ActionSequenceHandler : public ActionParseDelegate { public: ActionSequenceHandler(ScenarioObject* containerNode, const rapidjson::Value& actionsArray); virtual ~ActionSequenceHandler(); virtual void runNext(); virtual void reset(); virtual void stop(); // action parse delegate virtual ScenarioObject* getObjectByName(std::string objectName); virtual ScenarioObject* getDefaultObjectForAction(std::string actionType); virtual ScenarioObject* getDefaultObjectForConditionCheck(); virtual void addNewObject(std::string objectName, ScenarioObject* newObject); virtual std::string getDefaultSoundsPath(); virtual std::string getAlternativeSoundsPath(); virtual std::string getValueStorageContainerName(); virtual void runAction(cocos2d::Action* action); virtual void actionFinished(const rapidjson::Value& jsonActionObject); virtual void runInstantly(std::function actionFunction); virtual void runCompletingAction(cocos2d::Action* action); virtual void cancelAllCompletingActions(); virtual void schedule(std::function callback, std::string key, float delay); virtual void scheduleOnce(std::function callback, float delay, std::string key); virtual void unschedule(std::string key); virtual void newTouchHandler(std::string key, TouchHandlerFunction touchHandler, TouchHandlerType touchType); virtual void removeTouchHandler(std::string key, TouchHandlerType touchType); virtual long long getLastScreenTouchTime(); virtual int getLoopActionCounter(std::string loopId); virtual int addNewLoopActionCounter(std::string loopId, int timesRepeated); virtual int decrementLoopActionCounter(std::string loopId); virtual void deleteLoopActionCounter(std::string loopId); virtual void setLastActionIndex(int index); virtual unsigned int removeStoredSoundId(std::string soundPath); virtual void storeSoundId(std::string soundPath, unsigned int newSoundId); protected: std::string _valueStorageContainerName; ScenarioObject* _containerNode; rapidjson::Document* _JSONDataStorage; rapidjson::Value* _actions; int _lastActionIndex; cocos2d::Action* _currentAction; std::function _onLastActionFinished; }; #endif /* ActionSequenceHandler_h */