#include "CCLabelTTFLoader.h" #include "LocalizationMgr.h" using namespace cocos2d; #define PROPERTY_BLENDFUNC "blendFunc" #define PROPERTY_FONTNAME "fontName" #define PROPERTY_FONTSIZE "fontSize" #define PROPERTY_HORIZONTALALIGNMENT "horizontalAlignment" #define PROPERTY_VERTICALALIGNMENT "verticalAlignment" #define PROPERTY_STRING "string" #define PROPERTY_DIMENSIONS "dimensions" #define PROPERTY_LOCALIZATION "localization" namespace redream { void LabelTTFLoader::onHandlePropTypeBlendFunc(Node * pNode, Node * pParent, const char * pPropertyName, BlendFunc pBlendFunc, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_BLENDFUNC) == 0) { ((Label *)pNode)->setBlendFunc(pBlendFunc); } else { NodeLoader::onHandlePropTypeBlendFunc(pNode, pParent, pPropertyName, pBlendFunc, ccbReader); } } void LabelTTFLoader::onHandlePropTypeFontTTF(Node * pNode, Node * pParent, const char * pPropertyName, const char * pFontTTF, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_FONTNAME) == 0) { if (FileUtils::getInstance()->isFileExist(pFontTTF)) { _isTTFExist = true; auto config = ((Label *)pNode)->getTTFConfig(); config.fontFilePath = pFontTTF; ((Label *)pNode)->setTTFConfig(config); } else { _isTTFExist = false; ((Label *)pNode)->setSystemFontName(pFontTTF); } } else { NodeLoader::onHandlePropTypeFontTTF(pNode, pParent, pPropertyName, pFontTTF, ccbReader); } } void LabelTTFLoader::onHandlePropTypeText(Node * pNode, Node * pParent, const char * pPropertyName, const char * pText, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_STRING) == 0) { ((Label *)pNode)->setString(pText); } else { NodeLoader::onHandlePropTypeText(pNode, pParent, pPropertyName, pText, ccbReader); } } void LabelTTFLoader::onHandlePropTypeFloatScale(Node * pNode, Node * pParent, const char * pPropertyName, float pFloatScale, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_FONTSIZE) == 0) { if (_isTTFExist) { auto config = ((Label *)pNode)->getTTFConfig(); config.fontSize = pFloatScale; ((Label *)pNode)->setTTFConfig(config); } else { ((Label *)pNode)->setSystemFontSize(pFloatScale); } } else { NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pFloatScale, ccbReader); } } void LabelTTFLoader::onHandlePropTypeIntegerLabeled(Node * pNode, Node * pParent, const char * pPropertyName, int pIntegerLabeled, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_HORIZONTALALIGNMENT) == 0) { ((Label *)pNode)->setHorizontalAlignment(TextHAlignment(pIntegerLabeled)); } else if(strcmp(pPropertyName, PROPERTY_VERTICALALIGNMENT) == 0) { ((Label *)pNode)->setVerticalAlignment(TextVAlignment(pIntegerLabeled)); } else { NodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pIntegerLabeled, ccbReader); } } void LabelTTFLoader::onHandlePropTypeSize(Node * pNode, Node * pParent, const char * pPropertyName, Size size, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_DIMENSIONS) == 0) { ((Label *)pNode)->setDimensions(size.width,size.height); } else { NodeLoader::onHandlePropTypeSize(pNode, pParent, pPropertyName, size, ccbReader); } } void LabelTTFLoader::onHandlePropTypeLocalization(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, LocalizationModel pModel, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_LOCALIZATION) == 0) { ((Label *)pNode)->setLocalizationModel(pModel); if(pModel.isLocalization) { if(pModel.isCustom) { ((Label *)pNode)->setString(LocalizationMgr::getInstance()->getString(pModel.key, pModel.customFilePath)); } else { ((Label *)pNode)->setString(LocalizationMgr::getInstance()->getString(pModel.key, LOCALIZATION_DEFAULT_FILE)); } } } else { NodeLoader::onHandlePropTypeLocalization(pNode, pParent, pPropertyName, pModel, ccbReader); } } }