CCLabelTTFLoader.cpp 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include "CCLabelTTFLoader.h"
  2. #include "LocalizationMgr.h"
  3. using namespace cocos2d;
  4. #define PROPERTY_BLENDFUNC "blendFunc"
  5. #define PROPERTY_FONTNAME "fontName"
  6. #define PROPERTY_FONTSIZE "fontSize"
  7. #define PROPERTY_HORIZONTALALIGNMENT "horizontalAlignment"
  8. #define PROPERTY_VERTICALALIGNMENT "verticalAlignment"
  9. #define PROPERTY_STRING "string"
  10. #define PROPERTY_DIMENSIONS "dimensions"
  11. #define PROPERTY_LOCALIZATION "localization"
  12. namespace redream {
  13. void LabelTTFLoader::onHandlePropTypeBlendFunc(Node * pNode, Node * pParent, const char * pPropertyName, BlendFunc pBlendFunc, REDReader * ccbReader) {
  14. if(strcmp(pPropertyName, PROPERTY_BLENDFUNC) == 0) {
  15. ((Label *)pNode)->setBlendFunc(pBlendFunc);
  16. } else {
  17. NodeLoader::onHandlePropTypeBlendFunc(pNode, pParent, pPropertyName, pBlendFunc, ccbReader);
  18. }
  19. }
  20. void LabelTTFLoader::onHandlePropTypeFontTTF(Node * pNode, Node * pParent, const char * pPropertyName, const char * pFontTTF, REDReader * ccbReader) {
  21. if(strcmp(pPropertyName, PROPERTY_FONTNAME) == 0) {
  22. if (FileUtils::getInstance()->isFileExist(pFontTTF)) {
  23. _isTTFExist = true;
  24. auto config = ((Label *)pNode)->getTTFConfig();
  25. config.fontFilePath = pFontTTF;
  26. ((Label *)pNode)->setTTFConfig(config);
  27. } else {
  28. _isTTFExist = false;
  29. ((Label *)pNode)->setSystemFontName(pFontTTF);
  30. }
  31. } else {
  32. NodeLoader::onHandlePropTypeFontTTF(pNode, pParent, pPropertyName, pFontTTF, ccbReader);
  33. }
  34. }
  35. void LabelTTFLoader::onHandlePropTypeText(Node * pNode, Node * pParent, const char * pPropertyName, const char * pText, REDReader * ccbReader) {
  36. if(strcmp(pPropertyName, PROPERTY_STRING) == 0) {
  37. ((Label *)pNode)->setString(pText);
  38. } else {
  39. NodeLoader::onHandlePropTypeText(pNode, pParent, pPropertyName, pText, ccbReader);
  40. }
  41. }
  42. void LabelTTFLoader::onHandlePropTypeFloatScale(Node * pNode, Node * pParent, const char * pPropertyName, float pFloatScale, REDReader * ccbReader) {
  43. if(strcmp(pPropertyName, PROPERTY_FONTSIZE) == 0) {
  44. if (_isTTFExist) {
  45. auto config = ((Label *)pNode)->getTTFConfig();
  46. config.fontSize = pFloatScale;
  47. ((Label *)pNode)->setTTFConfig(config);
  48. } else {
  49. ((Label *)pNode)->setSystemFontSize(pFloatScale);
  50. }
  51. } else {
  52. NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pFloatScale, ccbReader);
  53. }
  54. }
  55. void LabelTTFLoader::onHandlePropTypeIntegerLabeled(Node * pNode, Node * pParent, const char * pPropertyName, int pIntegerLabeled, REDReader * ccbReader) {
  56. if(strcmp(pPropertyName, PROPERTY_HORIZONTALALIGNMENT) == 0) {
  57. ((Label *)pNode)->setHorizontalAlignment(TextHAlignment(pIntegerLabeled));
  58. } else if(strcmp(pPropertyName, PROPERTY_VERTICALALIGNMENT) == 0) {
  59. ((Label *)pNode)->setVerticalAlignment(TextVAlignment(pIntegerLabeled));
  60. } else {
  61. NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pIntegerLabeled, ccbReader);
  62. }
  63. }
  64. void LabelTTFLoader::onHandlePropTypeSize(Node * pNode, Node * pParent, const char * pPropertyName, Size size, REDReader * ccbReader) {
  65. if(strcmp(pPropertyName, PROPERTY_DIMENSIONS) == 0) {
  66. ((Label *)pNode)->setDimensions(size.width,size.height);
  67. } else {
  68. NodeLoader::onHandlePropTypeSize(pNode, pParent, pPropertyName, size, ccbReader);
  69. }
  70. }
  71. void LabelTTFLoader::onHandlePropTypeLocalization(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, LocalizationModel pModel, REDReader * ccbReader) {
  72. if(strcmp(pPropertyName, PROPERTY_LOCALIZATION) == 0) {
  73. ((Label *)pNode)->setLocalizationModel(pModel);
  74. if(pModel.isLocalization) {
  75. if(pModel.isCustom) {
  76. ((Label *)pNode)->setString(LocalizationMgr::getInstance()->getString(pModel.key, pModel.customFilePath));
  77. } else {
  78. ((Label *)pNode)->setString(LocalizationMgr::getInstance()->getString(pModel.key, LOCALIZATION_DEFAULT_FILE));
  79. }
  80. }
  81. } else {
  82. NodeLoader::onHandlePropTypeLocalization(pNode, pParent, pPropertyName, pModel, ccbReader);
  83. }
  84. }
  85. }