#ifndef _RED_REDSELECTORRESOLVER_H_ #define _RED_REDSELECTORRESOLVER_H_ #include "extensions//GUI/CCControlExtension/CCInvocation.h" #include "REDEditBox.h" #include "UISliderLoader.h" #include "UICheckBoxLoader.h" namespace redream { #define RED_SELECTORRESOLVER_CCMENUITEM_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return CC_MENU_SELECTOR(METHOD); \ } #define RED_SELECTORRESOLVER_CCCONTROL_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return cccontrol_selector(METHOD); \ } #define RED_SELECTORRESOLVER_CALLFUNC_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return CC_CALLFUNCN_SELECTOR(METHOD); \ } #define RED_SELECTORRESOLVER_UISLIDER_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return static_cast(&METHOD); \ } #define RED_SELECTORRESOLVER_UIEDITBOX_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return static_cast(&METHOD); \ } #define RED_SELECTORRESOLVER_UICHECKBOX_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \ return static_cast(&METHOD); \ } class CC_DLL REDSelectorResolver { public: /** * @js NA * @lua NA */ virtual ~REDSelectorResolver() {}; virtual cocos2d::SEL_MenuHandler onResolveREDCCMenuItemSelector(cocos2d::Ref * pTarget, const char* pSelectorName) = 0; virtual cocos2d::SEL_CallFuncN onResolveREDCCCallFuncSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return NULL; }; virtual cocos2d::extension::Control::Handler onResolveREDCCControlSelector(cocos2d::Ref * pTarget, const char* pSelectorName) = 0; virtual SliderHandler onResolveREDUISliderSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; }; virtual REDEditBoxDelegate::Handler onResolveREDUIEditBoxSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; }; virtual CheckBoxHandler onResolveREDUICheckBoxSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; }; }; class CC_DLL REDScriptOwnerProtocol { public: /** * @js NA * @lua NA */ virtual ~REDScriptOwnerProtocol() {}; virtual REDSelectorResolver * createNew() = 0; }; } #endif