RedreamLoader.cpp 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #include "RedreamLoader.h"
  2. RedreamLoader::RedreamLoader() {
  3. }
  4. RedreamLoader::~RedreamLoader() {
  5. _mapChilden.clear();
  6. if (_loaderReboltRedManager != nullptr) {
  7. _loaderReboltRedManager->release();
  8. _loaderReboltRedManager = nullptr;
  9. }
  10. }
  11. RedreamLoader* RedreamLoader::Layer(string file) {
  12. auto lib = redream::NodeLoaderLibrary::newDefaultNodeLoaderLibrary();
  13. lib->registerNodeLoader("RedreamLoader",RedreamLoaderLoader::loader());
  14. redream::REDReader* reader = new redream::REDReader(lib);
  15. RedreamLoader* node = (RedreamLoader*)reader->readNodeGraphFromFile(file.c_str());
  16. reader->autorelease();
  17. return node;
  18. }
  19. RedreamLoader* RedreamLoader::LayerWithLib(string file,redream::NodeLoaderLibrary* lib) {
  20. lib->registerNodeLoader("RedreamLoader",RedreamLoaderLoader::loader());
  21. redream::REDReader* reader = new redream::REDReader(lib);
  22. RedreamLoader* node = (RedreamLoader*)reader->readNodeGraphFromFile(file.c_str());
  23. reader->autorelease();
  24. return node;
  25. }
  26. RedreamLoader* RedreamLoader::ReboltLayer(string file) {
  27. auto reboltlib = redream::NodeLoaderLibrary::newDefaultNodeLoaderLibrary();
  28. reboltlib->registerNodeLoader("RedreamLoader",RedreamLoaderLoader::loader());
  29. redream::REDReader* reboltReader = new redream::REDReader(reboltlib);
  30. RedreamLoader* tmpNode = nullptr;
  31. try {
  32. tmpNode = (RedreamLoader*)reboltReader->readNodeGraphFromFile(file.c_str());
  33. redream::ReboltRedManager* reboltM = reboltReader->getReboltRedManager();
  34. reboltM->retain();
  35. reboltM->setNotifyDevelopmentDelegate(tmpNode);
  36. auto reboltmangs = reboltReader->getReboltRedManagerMapPtr();
  37. for (auto it = reboltmangs->begin(); it != reboltmangs->end(); it++) {
  38. auto rrm = it->second;
  39. rrm->setNotifyDevelopmentDelegate(tmpNode);
  40. }
  41. tmpNode->_loaderReboltRedManager = reboltM;
  42. reboltReader->release();
  43. } catch (string str) {
  44. CCLOG("loader error : %s", str.c_str());
  45. assert(false);
  46. }
  47. return tmpNode;
  48. }
  49. RedreamLoader* RedreamLoader::ReboltLayerWithLib(string file,redream::NodeLoaderLibrary* reboltlib) {
  50. reboltlib->registerNodeLoader("RedreamLoader",RedreamLoaderLoader::loader());
  51. redream::REDReader* reboltReader = new redream::REDReader(reboltlib);
  52. RedreamLoader* tmpNode = nullptr;
  53. try {
  54. tmpNode = (RedreamLoader*)reboltReader->readNodeGraphFromFile(file.c_str());
  55. redream::ReboltRedManager* reboltM = reboltReader->getReboltRedManager();
  56. reboltM->retain();
  57. reboltM->setNotifyDevelopmentDelegate(tmpNode);
  58. auto reboltmangs = reboltReader->getReboltRedManagerMapPtr();
  59. for (auto it = reboltmangs->begin(); it != reboltmangs->end(); it++) {
  60. auto rrm = it->second;
  61. rrm->setNotifyDevelopmentDelegate(tmpNode);
  62. }
  63. tmpNode->_loaderReboltRedManager = reboltM;
  64. reboltReader->release();
  65. } catch (string str) {
  66. CCLOG("loader error : %s", str.c_str());
  67. assert(false);
  68. }
  69. return tmpNode;
  70. }
  71. SEL_MenuHandler RedreamLoader::onResolveREDCCMenuItemSelector(Ref* pTarget,const char* pSelectorName) {
  72. return nullptr;
  73. }
  74. cocos2d::extension::Control::Handler RedreamLoader::onResolveREDCCControlSelector(cocos2d::Ref* pTarget,const char* pSelectorName) {
  75. //RED_SELECTORRESOLVER_CCCONTROL_GLUE(this, "OnClickCCBButton", RedreamLoader::OnClickCCBButton);
  76. return nullptr;
  77. }
  78. cocos2d::SEL_CallFuncN RedreamLoader::onResolveREDCCCallFuncSelector(cocos2d::Ref* pTarget,const char* pSelectorName) {
  79. //RED_SELECTORRESOLVER_CALLFUNC_GLUE(this,"onCCBTimeLineCallBacks",RedreamLoader::onCCBTimeLineCallBacks);
  80. return nullptr;
  81. }
  82. bool RedreamLoader::onAssignREDMemberVariable(cocos2d::Ref* pTarget,const char* pMemberVariableName,cocos2d::Node* node) {
  83. if (pTarget == this && node != this && strcmp(pMemberVariableName,"") != 0) {
  84. _mapChilden.insert(pair<string,Node*>(string(pMemberVariableName),node));
  85. return true;
  86. }
  87. return false;
  88. }
  89. void RedreamLoader::onNodeLoaded(cocos2d::Node* node,redream::NodeLoader* nodeLoader) {
  90. //loaded after
  91. }
  92. void RedreamLoader::completedAnimationSequenceNamed(const char* name,int seqId,int tag) {
  93. }
  94. Node* RedreamLoader::getByName(std::string name) {
  95. return _mapChilden[name];
  96. }
  97. Sprite* RedreamLoader::getSprite(std::string name) {
  98. return (Sprite*)_mapChilden[name];
  99. }
  100. Label* RedreamLoader::getLabel(std::string name) {
  101. return (Label*)_mapChilden[name];
  102. }
  103. ParticleSystemQuad* RedreamLoader::getParticle(std::string name) {
  104. return (ParticleSystemQuad*)_mapChilden[name];
  105. }
  106. redream::REDNodeButton* RedreamLoader::getREDNodeButton(std::string name) {
  107. return dynamic_cast<redream::REDNodeButton*>(_mapChilden[name]);
  108. }
  109. RedreamLoader* RedreamLoader::getSubLoader(std::string name) {
  110. return (RedreamLoader*)_mapChilden[name];
  111. }
  112. void RedreamLoader::stopAnimAll() {
  113. this->stopAllActions();
  114. }
  115. float RedreamLoader::playAnim(std::string anim) {
  116. Ref* obj = this->getUserObject();
  117. redream::REDAnimationManager* ret = dynamic_cast<redream::REDAnimationManager*>(obj);
  118. if (ret != nullptr) {
  119. ret->runAnimationsForSequenceNamed(anim.c_str());
  120. return ret->getSequenceDuration(anim.c_str());
  121. }
  122. return 0;
  123. }
  124. float RedreamLoader::getAnimTime(std::string anim) {
  125. Ref* obj = this->getUserObject();
  126. redream::REDAnimationManager* ret = dynamic_cast<redream::REDAnimationManager*>(obj);
  127. if (ret != nullptr) {
  128. return ret->getSequenceDuration(anim.c_str());
  129. }
  130. return 0;
  131. }
  132. redream::ReboltRedManager* RedreamLoader::getReboltManager() {
  133. return _loaderReboltRedManager;
  134. }
  135. void RedreamLoader::onNotifyDevelopment(redream::ReboltRedManager* reboltRedManager,redream::NotifyDevelopmentWaiter* waiter,std::string notify,std::string param,bool reboltIsWait,Node* outNode) {
  136. if (_reboltCallBack != nullptr) {
  137. _reboltCallBack(reboltRedManager,waiter,notify,param,reboltIsWait,outNode);
  138. }
  139. }