void TextBMFontReader::setPropsFromJsonDictionary(Widget *widget, const rapidjson::Value &options) { WidgetReader::setPropsFromJsonDictionary(widget, options); std::string jsonPath = GUIReader::getInstance()->getFilePath(); TextBMFont* labelBMFont = static_cast<TextBMFont*>(widget); const rapidjson::Value& cmftDic = DICTOOL->getSubDictionary_json(options, P_FileNameData); int cmfType = DICTOOL->getIntValue_json(cmftDic, P_ResourceType); switch (cmfType) { case 0: { std::string tp_c = jsonPath; const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelBMFont->setFntFile(cmf_tp); break; } case 1: CCLOG("Wrong res type of LabelAtlas!"); break; default: break; } const char* text = DICTOOL->getStringValue_json(options, P_Text,"Text Label"); labelBMFont->setString(text); WidgetReader::setColorPropsFromJsonDictionary(widget, options); }
void UIButtonTest_Title::touchEvent(Ref *pSender, Widget::TouchEventType type) { switch (type) { case Widget::TouchEventType::BEGAN: _displayValueLabel->setString(String::createWithFormat("Touch Down")->getCString()); break; case Widget::TouchEventType::MOVED: _displayValueLabel->setString(String::createWithFormat("Touch Move")->getCString()); break; case Widget::TouchEventType::ENDED: { _displayValueLabel->setString(String::createWithFormat("Touch Up")->getCString()); TextBMFont *text = (TextBMFont*)_uiLayer->getChildByName("text"); text->setFntFile("cocosui/bitmapFontTest2.fnt"); if (text->getString() == "BMFont") { text->setString("Hello"); } else{ text->setString("BMFont"); } } break; case Widget::TouchEventType::CANCELED: _displayValueLabel->setString(String::createWithFormat("Touch Cancelled")->getCString()); break; default: break; } }
void TextBMFontReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *cocoLoader, stExpCocoNode *cocoNode) { this->beginSetBasicProperties(widget); TextBMFont* labelBMFont = static_cast<TextBMFont*>(widget); stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER //read all color related properties of widget CC_COLOR_PROPERTY_BINARY_READER else if(key == P_FileNameData){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(cocoLoader, &stChildArray[i], imageFileNameType); if (imageFileNameType == (Widget::TextureResType)0) { labelBMFont->setFntFile(backgroundValue); } }else if(key == P_Text){ labelBMFont->setString(value); } } //end of for loop this->endSetBasicProperties(widget); }
void TextBMFontReader::setPropsWithFlatBuffers(cocos2d::Node *node, const flatbuffers::Table *textBMFontOptions) { TextBMFont* labelBMFont = static_cast<TextBMFont*>(node); auto options = (TextBMFontOptions*)textBMFontOptions; auto cmftDic = options->fileNameData(); int cmfType = cmftDic->resourceType(); switch (cmfType) { case 0: { const char* cmfPath = cmftDic->path()->c_str(); labelBMFont->setFntFile(cmfPath); break; } case 1: CCLOG("Wrong res type of LabelAtlas!"); break; default: break; } std::string text = options->text()->c_str(); labelBMFont->setString(text); auto widgetReader = WidgetReader::getInstance(); widgetReader->setPropsWithFlatBuffers(node, (Table*)options->widgetOptions()); }
void TextBMFontReader::setPropsWithFlatBuffers(cocos2d::Node *node, const flatbuffers::Table *textBMFontOptions) { TextBMFont* labelBMFont = static_cast<TextBMFont*>(node); auto options = (TextBMFontOptions*)textBMFontOptions; auto cmftDic = options->fileNameData(); bool fileExist = false; std::string errorFilePath = ""; std::string errorContent = ""; std::string path = cmftDic->path()->c_str(); int cmfType = cmftDic->resourceType(); switch (cmfType) { case 0: { if (FileUtils::getInstance()->isFileExist(path)) { FontAtlas* newAtlas = FontAtlasCache::getFontAtlasFNT(path); if (newAtlas) { fileExist = true; } else { errorContent = "has problem"; fileExist = false; } } else { errorContent = "missed"; fileExist = false; } break; } default: break; } if (fileExist) { labelBMFont->setFntFile(path); } else { errorFilePath = path; auto label = Label::create(); label->setString(__String::createWithFormat("%s %s", errorFilePath.c_str(), errorContent.c_str())->getCString()); labelBMFont->addChild(label); } std::string text = options->text()->c_str(); labelBMFont->setString(text); auto widgetReader = WidgetReader::getInstance(); widgetReader->setPropsWithFlatBuffers(node, (Table*)options->widgetOptions()); labelBMFont->ignoreContentAdaptWithSize(true); }
void TextBMFontReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) { WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); std::string jsonPath = GUIReader::getInstance()->getFilePath(); TextBMFont* labelBMFont = static_cast<TextBMFont*>(widget); const protocolbuffers::TextBMFontOptions& options = nodeTree.textbmfontoptions(); const protocolbuffers::ResourceData& cmftDic = options.filenamedata(); int cmfType = cmftDic.resourcetype(); switch (cmfType) { case 0: { std::string tp_c = jsonPath; const char* cmfPath = cmftDic.path().c_str(); const char* cmf_tp = tp_c.append(cmfPath).c_str(); labelBMFont->setFntFile(cmf_tp); break; } case 1: CCLOG("Wrong res type of LabelAtlas!"); break; default: break; } const char* text = (options.has_text()) ? options.text().c_str() : "Text Label"; labelBMFont->setString(text); // other commonly protperties WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); }
void TextBMFontReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) { WidgetReader::setPropsFromXML(widget, objectData); TextBMFont* labelBMFont = static_cast<TextBMFont*>(widget); std::string xmlPath = GUIReader::getInstance()->getFilePath(); std::string text = ""; int opacity = 255; // attributes const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); while (attribute) { std::string name = attribute->Name(); std::string value = attribute->Value(); if (name == "LabelText") { text = value; } else if (name == "Alpha") { opacity = atoi(value.c_str()); } attribute = attribute->Next(); } // child elements const tinyxml2::XMLElement* child = objectData->FirstChildElement(); while (child) { std::string name = child->Name(); if (name == "LabelBMFontFile_CNB") { attribute = child->FirstAttribute(); int resourceType = 0; std::string path = "", plistFile = ""; while (attribute) { name = attribute->Name(); std::string value = attribute->Value(); if (name == "Path") { path = value; } else if (name == "Type") { resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; } else if (name == "Plist") { plistFile = value; } attribute = attribute->Next(); } switch (resourceType) { case 0: { labelBMFont->setFntFile(xmlPath + path); break; } default: break; } } child = child->NextSiblingElement(); } labelBMFont->setString(text); labelBMFont->setOpacity(opacity); }