REDSelectorResolver.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef _RED_REDSELECTORRESOLVER_H_
  2. #define _RED_REDSELECTORRESOLVER_H_
  3. #include "extensions//GUI/CCControlExtension/CCInvocation.h"
  4. #include "REDEditBox.h"
  5. #include "UISliderLoader.h"
  6. #include "UICheckBoxLoader.h"
  7. namespace redream {
  8. #define RED_SELECTORRESOLVER_CCMENUITEM_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  9. return CC_MENU_SELECTOR(METHOD); \
  10. }
  11. #define RED_SELECTORRESOLVER_CCCONTROL_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  12. return cccontrol_selector(METHOD); \
  13. }
  14. #define RED_SELECTORRESOLVER_CALLFUNC_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  15. return CC_CALLFUNCN_SELECTOR(METHOD); \
  16. }
  17. #define RED_SELECTORRESOLVER_UISLIDER_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  18. return static_cast<SliderHandler>(&METHOD); \
  19. }
  20. #define RED_SELECTORRESOLVER_UIEDITBOX_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  21. return static_cast<REDEditBoxDelegate::Handler>(&METHOD); \
  22. }
  23. #define RED_SELECTORRESOLVER_UICHECKBOX_GLUE(TARGET, SELECTORNAME, METHOD) if(pTarget == TARGET && strcmp(pSelectorName, SELECTORNAME) == 0) { \
  24. return static_cast<CheckBoxHandler>(&METHOD); \
  25. }
  26. class CC_DLL REDSelectorResolver {
  27. public:
  28. /**
  29. * @js NA
  30. * @lua NA
  31. */
  32. virtual ~REDSelectorResolver() {};
  33. virtual cocos2d::SEL_MenuHandler onResolveREDCCMenuItemSelector(cocos2d::Ref * pTarget, const char* pSelectorName) = 0;
  34. virtual cocos2d::SEL_CallFuncN onResolveREDCCCallFuncSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return NULL; };
  35. virtual cocos2d::extension::Control::Handler onResolveREDCCControlSelector(cocos2d::Ref * pTarget, const char* pSelectorName) = 0;
  36. virtual SliderHandler onResolveREDUISliderSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; };
  37. virtual REDEditBoxDelegate::Handler onResolveREDUIEditBoxSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; };
  38. virtual CheckBoxHandler onResolveREDUICheckBoxSelector(cocos2d::Ref * pTarget, const char* pSelectorName) { return nullptr; };
  39. };
  40. class CC_DLL REDScriptOwnerProtocol {
  41. public:
  42. /**
  43. * @js NA
  44. * @lua NA
  45. */
  46. virtual ~REDScriptOwnerProtocol() {};
  47. virtual REDSelectorResolver * createNew() = 0;
  48. };
  49. }
  50. #endif