CCSpriteLoader.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "CCSpriteLoader.h"
  2. using namespace cocos2d;
  3. #include "2d/CustomMaterial.hpp"
  4. #define PROPERTY_FLIP "flip"
  5. #define PROPERTY_DISPLAYFRAME "displayFrame"
  6. #define PROPERTY_BLENDFUNC "blendFunc"
  7. #define PROPERTY_USE_MATERIAL "useMaterial"
  8. #define PROPERTY_MATERIAL_BALL "materialBall"
  9. namespace redream {
  10. void SpriteLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, REDReader * ccbReader) {
  11. if(strcmp(pPropertyName, PROPERTY_DISPLAYFRAME) == 0) {
  12. if(pSpriteFrame != nullptr) {
  13. ((Sprite *)pNode)->setSpriteFrame(pSpriteFrame);
  14. } else {
  15. CCLOG("ERROR: SpriteFrame nullptr");
  16. }
  17. } else {
  18. NodeLoader::onHandlePropTypeSpriteFrame(pNode, pParent, pPropertyName, pSpriteFrame, ccbReader);
  19. }
  20. }
  21. void SpriteLoader::onHandlePropTypeFlip(Node * pNode, Node * pParent, const char * pPropertyName, bool * pFlip, REDReader * ccbReader) {
  22. if(strcmp(pPropertyName, PROPERTY_FLIP) == 0) {
  23. ((Sprite *)pNode)->setFlippedX(pFlip[0]);
  24. ((Sprite *)pNode)->setFlippedY(pFlip[1]);
  25. } else {
  26. NodeLoader::onHandlePropTypeFlip(pNode, pParent, pPropertyName, pFlip, ccbReader);
  27. }
  28. }
  29. void SpriteLoader::onHandlePropTypeBlendFunc(Node * pNode, Node * pParent, const char * pPropertyName, BlendFunc pBlendFunc, REDReader * ccbReader) {
  30. if(strcmp(pPropertyName, PROPERTY_BLENDFUNC) == 0) {
  31. ((Sprite *)pNode)->setBlendFunc(pBlendFunc);
  32. } else {
  33. NodeLoader::onHandlePropTypeBlendFunc(pNode, pParent, pPropertyName, pBlendFunc, ccbReader);
  34. }
  35. }
  36. void SpriteLoader::onHandlePropTypeCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool pCheck, REDReader * ccbReader) {
  37. if (strcmp(pPropertyName, PROPERTY_USE_MATERIAL) == 0) {
  38. ((Sprite*)pNode)->setMaterialEnable(pCheck);
  39. } else {
  40. NodeLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, ccbReader);
  41. }
  42. }
  43. void SpriteLoader::onHandlePropTypeMaterialBall(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * materialPath, std::map<std::string, float> params, REDReader * ccbReader) {
  44. if (strcmp(pPropertyName, PROPERTY_MATERIAL_BALL) == 0) {
  45. auto sprite = (Sprite*) pNode;
  46. sprite->setCustomMaterial(materialPath);
  47. for (auto it = params.begin(); it != params.end(); it++) {
  48. sprite->getCustomMaterial()->setParamFloat(it->first, it->second);
  49. }
  50. } else {
  51. NodeLoader::onHandlePropTypeMaterialBall(pNode, pParent, pPropertyName, materialPath, params, ccbReader);
  52. }
  53. }
  54. }