#ifndef __RedreamLoader__ #define __RedreamLoader__ #include "cocos2d.h" #include "extensions/cocos-ext.h" #include "Redream.h" #include "REDReader.h" class RedreamLoader : public Layer ,public redream::REDSelectorResolver ,public redream::REDMemberVariableAssigner ,public redream::NodeLoaderListener ,public redream::REDAnimationManagerDelegate ,public redream::NotifyDevelopmentDelegate { public: static RedreamLoader* Layer(string file); static RedreamLoader* LayerWithLib(string file,redream::NodeLoaderLibrary* lib); static RedreamLoader* ReboltLayer(string file); static RedreamLoader* ReboltLayerWithLib(string file,redream::NodeLoaderLibrary* lib); RED_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(RedreamLoader,create); RedreamLoader(); ~RedreamLoader(); virtual cocos2d::SEL_MenuHandler onResolveREDCCMenuItemSelector(cocos2d::Ref* pTarget,const char* pSelectorName) override; virtual cocos2d::extension::Control::Handler onResolveREDCCControlSelector(cocos2d::Ref* pTarget,const char* pSelectorName) override; virtual cocos2d::SEL_CallFuncN onResolveREDCCCallFuncSelector(cocos2d::Ref* pTarget,const char* pSelectorName) override; virtual bool onAssignREDMemberVariable(cocos2d::Ref* pTarget,const char* pMemberVariableName,cocos2d::Node* node) override; virtual void onNodeLoaded(cocos2d::Node* node,redream::NodeLoader* nodeLoader) override; void completedAnimationSequenceNamed(const char *name, int seqId, int tag) override; //rebolt virtual void onNotifyDevelopment(redream::ReboltRedManager* reboltRedManager,redream::NotifyDevelopmentWaiter* waiter,std::string notify,std::string param,bool reboltIsWait,Node* outNode) override; float playAnim(std::string anim); float getAnimTime(std::string anim); void stopAnimAll(); redream::ReboltRedManager* getReboltManager(); //get sub node Node* getByName(std::string name); Sprite* getSprite(std::string name); Label* getLabel(std::string name); ParticleSystemQuad* getParticle(std::string name); redream::REDNodeButton* getREDNodeButton(std::string name); RedreamLoader* getSubLoader(std::string name); //rebolt std::function _reboltCallBack = nullptr; private: std::map _mapChilden; redream::ReboltRedManager* _loaderReboltRedManager = nullptr; }; class RedreamLoaderLoader : public redream::LayerLoader { public: RED_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(RedreamLoaderLoader,loader); protected: RED_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(RedreamLoader); }; #endif /* RedreamLoader */