CCControlButtonLoader.cpp 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #include "CCControlButtonLoader.h"
  2. #include "LocalizationMgr.h"
  3. using namespace cocos2d;
  4. using namespace cocos2d::extension;
  5. namespace redream {
  6. #define PROPERTY_ZOOMONTOUCHDOWN "zoomOnTouchDown"
  7. #define PROPERTY_TITLE_NORMAL "title|1"
  8. #define PROPERTY_TITLE_HIGHLIGHTED "title|2"
  9. #define PROPERTY_TITLE_DISABLED "title|3"
  10. #define PROPERTY_TITLECOLOR_NORMAL "titleColor|1"
  11. #define PROPERTY_TITLECOLOR_HIGHLIGHTED "titleColor|2"
  12. #define PROPERTY_TITLECOLOR_DISABLED "titleColor|3"
  13. #define PROPERTY_TITLETTF_NORMAL "titleTTF|1"
  14. #define PROPERTY_TITLETTF_HIGHLIGHTED "titleTTF|2"
  15. #define PROPERTY_TITLETTF_DISABLED "titleTTF|3"
  16. #define PROPERTY_TITLETTFSIZE_NORMAL "titleTTFSize|1"
  17. #define PROPERTY_TITLETTFSIZE_HIGHLIGHTED "titleTTFSize|2"
  18. #define PROPERTY_TITLETTFSIZE_DISABLED "titleTTFSize|3"
  19. #define PROPERTY_LABELANCHORPOINT "labelAnchorPoint"
  20. // TODO: Should be "preferredSize". This is a typo in cocos2d-iphone, cocos2d-x and redream!
  21. #define PROPERTY_PREFEREDSIZE "preferedSize"
  22. #define PROPERTY_BACKGROUNDSPRITEFRAME_NORMAL "backgroundSpriteFrame|1"
  23. #define PROPERTY_BACKGROUNDSPRITEFRAME_HIGHLIGHTED "backgroundSpriteFrame|2"
  24. #define PROPERTY_BACKGROUNDSPRITEFRAME_DISABLED "backgroundSpriteFrame|3"
  25. #define PROPERTY_SCALERATIO "scaleRatio"
  26. #define PROPERTY_LOCALIZATION "localization"
  27. void ControlButtonLoader::onHandlePropTypeCheck(Node * pNode, Node * pParent, const char * pPropertyName, bool pCheck, REDReader * ccbReader) {
  28. if(strcmp(pPropertyName, PROPERTY_ZOOMONTOUCHDOWN) == 0) {
  29. ((ControlButton *)pNode)->setZoomOnTouchDown(pCheck);
  30. } else {
  31. ControlLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, ccbReader);
  32. }
  33. }
  34. void ControlButtonLoader::onHandlePropTypeString(Node * pNode, Node * pParent, const char * pPropertyName, const char * pString, REDReader * ccbReader) {
  35. if(strcmp(pPropertyName, PROPERTY_TITLE_NORMAL) == 0) {
  36. ((ControlButton *)pNode)->setTitleForState(pString, Control::State::NORMAL);
  37. } else if(strcmp(pPropertyName, PROPERTY_TITLE_HIGHLIGHTED) == 0) {
  38. ((ControlButton *)pNode)->setTitleForState(pString, Control::State::HIGH_LIGHTED);
  39. } else if(strcmp(pPropertyName, PROPERTY_TITLE_DISABLED) == 0) {
  40. ((ControlButton *)pNode)->setTitleForState(pString, Control::State::DISABLED);
  41. } else {
  42. ControlLoader::onHandlePropTypeString(pNode, pParent, pPropertyName, pString, ccbReader);
  43. }
  44. }
  45. void ControlButtonLoader::onHandlePropTypeFontTTF(Node * pNode, Node * pParent, const char * pPropertyName, const char * pFontTTF, REDReader * ccbReader) {
  46. if(strcmp(pPropertyName, PROPERTY_TITLETTF_NORMAL) == 0) {
  47. ((ControlButton *)pNode)->setTitleTTFForState(pFontTTF, Control::State::NORMAL);
  48. } else if(strcmp(pPropertyName, PROPERTY_TITLETTF_HIGHLIGHTED) == 0) {
  49. ((ControlButton *)pNode)->setTitleTTFForState(pFontTTF, Control::State::HIGH_LIGHTED);
  50. } else if(strcmp(pPropertyName, PROPERTY_TITLETTF_DISABLED) == 0) {
  51. ((ControlButton *)pNode)->setTitleTTFForState(pFontTTF, Control::State::DISABLED);
  52. } else {
  53. ControlLoader::onHandlePropTypeFontTTF(pNode, pParent, pPropertyName, pFontTTF, ccbReader);
  54. }
  55. }
  56. void ControlButtonLoader::onHandlePropTypeFloatScale(Node * pNode, Node * pParent, const char * pPropertyName, float pFloatScale, REDReader * ccbReader) {
  57. if(strcmp(pPropertyName, PROPERTY_TITLETTFSIZE_NORMAL) == 0) {
  58. ((ControlButton *)pNode)->setTitleTTFSizeForState(pFloatScale, Control::State::NORMAL);
  59. } else if(strcmp(pPropertyName, PROPERTY_TITLETTFSIZE_HIGHLIGHTED) == 0) {
  60. ((ControlButton *)pNode)->setTitleTTFSizeForState(pFloatScale, Control::State::HIGH_LIGHTED);
  61. } else if(strcmp(pPropertyName, PROPERTY_TITLETTFSIZE_DISABLED) == 0) {
  62. ((ControlButton *)pNode)->setTitleTTFSizeForState(pFloatScale, Control::State::DISABLED);
  63. } else {
  64. ControlLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pFloatScale, ccbReader);
  65. }
  66. }
  67. void ControlButtonLoader::onHandlePropTypePoint(Node * pNode, Node * pParent, const char * pPropertyName, Vec2 pPoint, REDReader * ccbReader) {
  68. if(strcmp(pPropertyName, PROPERTY_LABELANCHORPOINT) == 0) {
  69. ((ControlButton *)pNode)->setLabelAnchorPoint(pPoint);
  70. } else {
  71. ControlLoader::onHandlePropTypePoint(pNode, pParent, pPropertyName, pPoint, ccbReader);
  72. }
  73. }
  74. void ControlButtonLoader::onHandlePropTypeSize(Node * pNode, Node * pParent, const char * pPropertyName, Size pSize, REDReader * ccbReader) {
  75. if(strcmp(pPropertyName, PROPERTY_PREFEREDSIZE) == 0) {
  76. ((ControlButton *)pNode)->setPreferredSize(pSize);
  77. } else {
  78. ControlLoader::onHandlePropTypeSize(pNode, pParent, pPropertyName, pSize, ccbReader);
  79. }
  80. }
  81. void ControlButtonLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, REDReader * ccbReader) {
  82. if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_NORMAL) == 0) {
  83. if(pSpriteFrame != nullptr) {
  84. ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::NORMAL);
  85. }
  86. } else if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_HIGHLIGHTED) == 0) {
  87. if(pSpriteFrame != nullptr) {
  88. ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::HIGH_LIGHTED);
  89. }
  90. } else if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_DISABLED) == 0) {
  91. if(pSpriteFrame != nullptr) {
  92. ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::DISABLED);
  93. }
  94. } else {
  95. ControlLoader::onHandlePropTypeSpriteFrame(pNode, pParent, pPropertyName, pSpriteFrame, ccbReader);
  96. }
  97. }
  98. void ControlButtonLoader::onHandlePropTypeColor3(Node * pNode, Node * pParent, const char * pPropertyName, Color3B pColor3B, REDReader * ccbReader) {
  99. if(strcmp(pPropertyName, PROPERTY_TITLECOLOR_NORMAL) == 0) {
  100. ((ControlButton *)pNode)->setTitleColorForState(pColor3B, Control::State::NORMAL);
  101. } else if(strcmp(pPropertyName, PROPERTY_TITLECOLOR_HIGHLIGHTED) == 0) {
  102. ((ControlButton *)pNode)->setTitleColorForState(pColor3B, Control::State::HIGH_LIGHTED);
  103. } else if(strcmp(pPropertyName, PROPERTY_TITLECOLOR_DISABLED) == 0) {
  104. ((ControlButton *)pNode)->setTitleColorForState(pColor3B, Control::State::DISABLED);
  105. } else {
  106. ControlLoader::onHandlePropTypeColor3(pNode, pParent, pPropertyName, pColor3B, ccbReader);
  107. }
  108. }
  109. void ControlButtonLoader::onHandlePropTypeFloat(Node * pNode, Node * pParent, const char* pPropertyName, float pFloat, REDReader * redReader) {
  110. // ASSERT_FAIL_UNEXPECTED_PROPERTY(pPropertyName);
  111. // It may be a custom property, add it to custom property dictionary.
  112. if(strcmp(pPropertyName, PROPERTY_SCALERATIO) == 0) {
  113. ((ControlButton *)pNode)->setScaleRatio(pFloat);
  114. }else{
  115. ControlLoader::onHandlePropTypeFloat(pNode, pParent, pPropertyName, pFloat,redReader);
  116. }
  117. }
  118. void ControlButtonLoader::onHandlePropTypeLocalization(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, LocalizationModel pModel, REDReader * ccbReader) {
  119. if(strcmp(pPropertyName, PROPERTY_LOCALIZATION) == 0) {
  120. ((ControlButton *)pNode)->setLocalizationModel(pModel);
  121. if(pModel.isLocalization) {
  122. if(pModel.isCustom) {
  123. ((ControlButton *)pNode)->setTitleTTFForState(LocalizationMgr::getInstance()->getString(pModel.key, pModel.customFilePath), Control::State::NORMAL);
  124. } else {
  125. ((ControlButton *)pNode)->setTitleTTFForState(LocalizationMgr::getInstance()->getString(pModel.key, LOCALIZATION_DEFAULT_FILE), Control::State::NORMAL);
  126. }
  127. }
  128. } else {
  129. NodeLoader::onHandlePropTypeLocalization(pNode, pParent, pPropertyName, pModel, ccbReader);
  130. }
  131. }
  132. };