// // ToyActionSequenceHandler.h // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 29.06.2017. // // #ifndef ToyActionSequenceHandler_h #define ToyActionSequenceHandler_h #include "ToyActionParser.h" #include "json/document.h" #include "ToyScenarioObject.h" class ToyActionSequenceHandler : public ActionParseDelegate { public: ToyActionSequenceHandler(ToyScenarioObject* containerNode, const rapidjson::Value& actionsArray); virtual ~ToyActionSequenceHandler(); virtual void runNext(); virtual void reset(); virtual void stop(); // action parse delegate virtual ToyScenarioObject* getObjectByName(std::string objectName); virtual ToyScenarioObject* getDefaultObjectForAction(std::string actionType); virtual ToyScenarioObject* getDefaultObjectForConditionCheck(); virtual void addNewObject(std::string objectName, ToyScenarioObject* newObject); virtual std::string getDefaultSoundsPath(); virtual std::string getAlternativeSoundsPath(); virtual std::string getToyValueStorageContainerName(); 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; ToyScenarioObject* _containerNode; rapidjson::Document* _JSONDataStorage; rapidjson::Value* _actions; int _lastActionIndex; cocos2d::Action* _currentAction; std::function _onLastActionFinished; }; #endif /* ToyActionSequenceHandler_h */