//----------Object--------------- StreamBase& JsonStream::operator<<(KeyValueReference<bool> keyValue) { if(serialise()) { setType(TYPE_OBJECT); mObject[keyValue.key] = keyValue.value; } else { if(checkDeserialisation() && checkObjectMember(keyValue.key)) { valueToBool(mObject[keyValue.key], keyValue.value); } } return *this; }
//----------Array--------------- StreamBase& JsonStream::operator<<(ValueReference<bool> value) { if(serialise()) { setType(TYPE_ARRAY); mArray.push_back(value.value); } else { if(checkDeserialisation() && arrayBoundsOk()) { valueToBool(mArray[mArrayNextRead], value.value); mArrayNextRead++; } } return *this; }
void ActionObject::initWithBinary(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Ref *root) { stExpCocoNode *stChildNode = cocoNode->GetChildArray(cocoLoader); stExpCocoNode *actionNodeList = nullptr; int count = cocoNode->GetChildNum(); for (int i = 0; i < count; ++i) { std::string key = stChildNode[i].GetName(cocoLoader); std::string value = stChildNode[i].GetValue(cocoLoader); if (key == "name") { setName(value.c_str()); }else if (key == "loop"){ setLoop(valueToBool(value)); }else if(key == "unittime"){ setUnitTime(valueToFloat(value)); }else if (key == "actionnodelist"){ actionNodeList = &stChildNode[i]; } } if(nullptr != actionNodeList) { int actionNodeCount = actionNodeList->GetChildNum(); stExpCocoNode *actionNodeArray = actionNodeList->GetChildArray(cocoLoader); int maxLength = 0; for (int i=0; i<actionNodeCount; i++) { ActionNode* actionNode = new ActionNode(); actionNode->autorelease(); actionNode->initWithBinary(cocoLoader, &actionNodeArray[i] , root); actionNode->setUnitTime(getUnitTime()); _actionNodeList.pushBack(actionNode); int length = actionNode->getLastFrameIndex() - actionNode->getFirstFrameIndex(); if(length > maxLength) maxLength = length; } _fTotalTime = maxLength* _fUnitTime; } }
void LoadingBarReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *pCocoLoader, stExpCocoNode *pCocoNode) { WidgetReader::setPropsFromBinary(widget, pCocoLoader, pCocoNode); ui::LoadingBar* loadingBar = static_cast<ui::LoadingBar*>(widget); this->beginSetBasicProperties(widget); float capsx = 0.0f, capsy = 0.0, capsWidth = 0.0, capsHeight = 0.0f; stExpCocoNode *stChildArray = pCocoNode->GetChildArray(pCocoLoader); int percent = 0; for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(pCocoLoader); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ _sizePercentX = valueToFloat(value); }else if(key == "sizePercentY"){ _sizePercentY = valueToFloat(value); }else if(key == "positionPercentX"){ _positionPercentX = valueToFloat(value); }else if(key == "positionPercentY"){ _positionPercentY = valueToFloat(value); } else if(key == "adaptScreen"){ _isAdaptScreen = valueToBool(value); } else if (key == "width"){ _width = valueToFloat(value); }else if(key == "height"){ _height = valueToFloat(value); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ _position.x = valueToFloat(value); }else if(key == "y"){ _position.y = valueToFloat(value); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(pCocoLoader); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(pCocoLoader); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } else if (key == "opacity") { _opacity = valueToInt(value); } else if(key == "colorR"){ _color.r = valueToInt(value); }else if(key == "colorG"){ _color.g = valueToInt(value); }else if(key == "colorB") { _color.b = valueToInt(value); } else if(key == "flipX"){ widget->setFlipX(valueToBool(value)); }else if(key == "flipY"){ widget->setFlipY(valueToBool(value)); }else if(key == "anchorPointX"){ _originalAnchorPoint.x = valueToFloat(value); }else if(key == "anchorPointY"){ _originalAnchorPoint.y = valueToFloat(value); } else if (key == "scale9Enable") { loadingBar->setScale9Enabled(valueToBool(value)); } else if (key == "textureData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); loadingBar->loadTexture(backgroundValue.c_str(), imageFileNameType); } else if(key == "capInsetsX"){ capsx = valueToFloat(value); }else if(key == "capInsetsY"){ capsy = valueToFloat(value); }else if(key == "capInsetsWidth"){ capsWidth = valueToFloat(value); }else if(key == "capInsetsHeight"){ capsHeight = valueToFloat(value); }else if(key == "direction"){ loadingBar->setDirection((ui::LoadingBarType)valueToInt(value)); }else if(key == "percent"){ percent = valueToInt(value); } } //end of for loop //the call order of this function matters this->endSetBasicProperties(widget); loadingBar->setPercent(percent); if (loadingBar->isScale9Enabled()) { loadingBar->setCapInsets(CCRect(capsx, capsy, capsWidth, capsHeight)); } }
void TextFieldReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *pCocoLoader, stExpCocoNode *pCocoNode) { this->beginSetBasicProperties(widget); ui::TextField* textField = static_cast<ui::TextField*>(widget); stExpCocoNode *stChildArray = pCocoNode->GetChildArray(pCocoLoader); for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(pCocoLoader); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ _sizePercentX = valueToFloat(value); }else if(key == "sizePercentY"){ _sizePercentY = valueToFloat(value); }else if(key == "positionPercentX"){ _positionPercentX = valueToFloat(value); }else if(key == "positionPercentY"){ _positionPercentY = valueToFloat(value); } else if(key == "adaptScreen"){ _isAdaptScreen = valueToBool(value); } else if (key == "width"){ _width = valueToFloat(value); }else if(key == "height"){ _height = valueToFloat(value); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ _position.x = valueToFloat(value); }else if(key == "y"){ _position.y = valueToFloat(value); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(pCocoLoader); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(pCocoLoader); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } else if (key == "opacity") { _opacity = valueToInt(value); } else if(key == "colorR"){ _color.r = valueToInt(value); }else if(key == "colorG"){ _color.g = valueToInt(value); }else if(key == "colorB") { _color.b = valueToInt(value); } else if(key == "flipX"){ widget->setFlipX(valueToBool(value)); }else if(key == "flipY"){ widget->setFlipY(valueToBool(value)); }else if(key == "anchorPointX"){ _originalAnchorPoint.x = valueToFloat(value); }else if(key == "anchorPointY"){ _originalAnchorPoint.y = valueToFloat(value); } else if(key == "placeHolder"){ textField->setPlaceHolder(value); }else if(key == "text"){ textField->setText(value); }else if(key == "fontSize"){ textField->setFontSize(valueToInt(value)); }else if(key == "fontName"){ textField->setFontName(value); }else if(key == "touchSizeWidth"){ textField->setTouchSize(CCSize(valueToFloat(value), textField->getTouchSize().height)); }else if(key == "touchSizeHeight"){ textField->setTouchSize(CCSize(textField->getTouchSize().width, valueToFloat(value))); }else if (key == "maxLengthEnable"){ textField->setMaxLengthEnabled(valueToBool(value)); }else if(key == "maxLength"){ textField->setMaxLength(valueToInt(value)); }else if(key == "passwordEnable"){ textField->setPasswordEnabled(valueToBool(value)); }else if(key == "passwordStyleText"){ textField->setPasswordStyleText(value.c_str()); } } //end of for loop this->endSetBasicProperties(widget); }
void WidgetReader::setPropsFromBinary(cocos2d::ui::Widget *widget, cocos2d::extension::CocoLoader *pCocoLoader, cocos2d::extension::stExpCocoNode *pCocoNode) { stExpCocoNode *stChildArray = pCocoNode->GetChildArray(pCocoLoader); for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(pCocoLoader); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ widget->setSizePercent(CCPoint(valueToFloat(value), widget->getSizePercent().y)); }else if(key == "sizePercentY"){ widget->setSizePercent(CCPoint(widget->getSizePercent().x, valueToFloat(value))); }else if(key == "positionPercentX"){ widget->setPositionPercent(CCPoint(valueToFloat(value), widget->getPositionPercent().y)); }else if(key == "positionPercentY"){ widget->setPositionPercent(CCPoint(widget->getPositionPercent().x, valueToFloat(value))); }else if (key == "width"){ widget->setSize(CCSize(valueToFloat(value), widget->getSize().height)); }else if(key == "height"){ widget->setSize(CCSize(widget->getSize().width, valueToFloat(value))); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ widget->setPosition(CCPoint(valueToFloat(value), widget->getPosition().y)); }else if(key == "y"){ widget->setPosition(CCPoint(widget->getPosition().x, valueToFloat(value))); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(pCocoLoader); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(pCocoLoader); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } } }
void LabelAtlasReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *pCocoLoader, stExpCocoNode *pCocoNode) { this->beginSetBasicProperties(widget); ui::LabelAtlas* labelAtlas = static_cast<ui::LabelAtlas*>(widget); stExpCocoNode *stChildArray = pCocoNode->GetChildArray(); ui::TextureResType type = ui::UI_TEX_TYPE_LOCAL; std::string charMapFileName; std::string stringValue; std::string startCharMap; float itemWidth = 0.0f; float itemHeight = 0.0f; for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(); // CCLOG("LabelAtlas: key = %s, value = %s", key.c_str(), value.c_str()); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ _sizePercentX = valueToFloat(value); }else if(key == "sizePercentY"){ _sizePercentY = valueToFloat(value); }else if(key == "positionPercentX"){ _positionPercentX = valueToFloat(value); }else if(key == "positionPercentY"){ _positionPercentY = valueToFloat(value); } else if(key == "adaptScreen"){ _isAdaptScreen = valueToBool(value); } else if (key == "width"){ _width = valueToFloat(value); }else if(key == "height"){ _height = valueToFloat(value); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ _position.x = valueToFloat(value); }else if(key == "y"){ _position.y = valueToFloat(value); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } else if (key == "opacity") { _opacity = valueToInt(value); } else if(key == "colorR"){ _color.r = valueToInt(value); }else if(key == "colorG"){ _color.g = valueToInt(value); }else if(key == "colorB") { _color.b = valueToInt(value); } else if(key == "flipX"){ widget->setFlipX(valueToBool(value)); }else if(key == "flipY"){ widget->setFlipY(valueToBool(value)); }else if(key == "anchorPointX"){ _originalAnchorPoint.x = valueToFloat(value); }else if(key == "anchorPointY"){ _originalAnchorPoint.y = valueToFloat(value); } else if (key == "stringValue") { stringValue = value; } else if(key == "charMapFileData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); std::string resType = backGroundChildren[2].GetValue();; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); charMapFileName = backgroundValue; type = imageFileNameType; }else if(key == "itemWidth"){ itemWidth = valueToFloat(value); }else if(key == "itemHeight"){ itemHeight = valueToFloat(value); }else if(key == "startCharMap"){ startCharMap = value; } } //end of for loop if (type == (ui::TextureResType)0) { labelAtlas->setProperty(stringValue, charMapFileName, itemWidth, itemHeight, startCharMap); } this->endSetBasicProperties(widget); }
void LayoutReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *pCocoLoader, stExpCocoNode *pCocoNode) { WidgetReader::setPropsFromBinary(widget, pCocoLoader, pCocoNode); ui::Layout* panel = static_cast<ui::Layout*>(widget); stExpCocoNode *stChildArray = pCocoNode->GetChildArray(pCocoLoader); this->beginSetBasicProperties(widget); int cr=0, cg = 0, cb = 0; int scr=0, scg=0, scb=0; int ecr=0, ecg=0, ecb= 0; float bgcv1 = 0.0f, bgcv2= 0.0f; float capsx = 0.0f, capsy = 0.0, capsWidth = 0.0, capsHeight = 0.0f; ui::LayoutType layoutType = ui::LAYOUT_ABSOLUTE; ui::LayoutBackGroundColorType colorType = ui::LAYOUT_COLOR_NONE; int bgColorOpacity = 0; for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(pCocoLoader); // CCLOG("Layout: key = %s, value = %d", key.c_str(), i); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ _sizePercentX = valueToFloat(value); }else if(key == "sizePercentY"){ _sizePercentY = valueToFloat(value); }else if(key == "positionPercentX"){ _positionPercentX = valueToFloat(value); }else if(key == "positionPercentY"){ _positionPercentY = valueToFloat(value); } else if(key == "adaptScreen"){ _isAdaptScreen = valueToBool(value); } else if (key == "width"){ _width = valueToFloat(value); }else if(key == "height"){ _height = valueToFloat(value); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ _position.x = valueToFloat(value); }else if(key == "y"){ _position.y = valueToFloat(value); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(pCocoLoader); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(pCocoLoader); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } else if (key == "opacity") { _opacity = valueToInt(value); } else if(key == "colorR"){ _color.r = valueToInt(value); }else if(key == "colorG"){ _color.g = valueToInt(value); }else if(key == "colorB") { _color.b = valueToInt(value); } else if(key == "flipX"){ widget->setFlipX(valueToBool(value)); }else if(key == "flipY"){ widget->setFlipY(valueToBool(value)); }else if(key == "anchorPointX"){ _originalAnchorPoint.x = valueToFloat(value); }else if(key == "anchorPointY"){ _originalAnchorPoint.y = valueToFloat(value); } else if(key == "width"){ _width = valueToFloat(value); } else if(key == "height"){ _height = valueToFloat(value); } else if( key == "clipAble"){ panel->setClippingEnabled(valueToBool(value)); }else if(key == "backGroundScale9Enable"){ panel->setBackGroundImageScale9Enabled(valueToBool(value)); }else if(key == "bgColorR"){ cr = valueToInt(value); }else if(key == "bgColorG"){ cg = valueToInt(value); }else if(key == "bgColorB") { cb = valueToInt(value); }else if(key == "bgStartColorR"){ scr = valueToInt(value); }else if(key == "bgStartColorG"){ scg = valueToInt(value); }else if(key == "bgStartColorB") { scb = valueToInt(value); } else if(key == "bgEndColorR"){ ecr = valueToInt(value); }else if(key == "bgEndColorG"){ ecg = valueToInt(value); }else if(key == "bgEndColorB") { ecb = valueToInt(value); }else if (key == "vectorX"){ bgcv1 = valueToFloat(value); }else if(key == "vectorY"){ bgcv2 = valueToFloat(value); }else if(key == "bgColorOpacity"){ bgColorOpacity = valueToInt(value); }else if( key == "colorType"){ colorType = ui::LayoutBackGroundColorType(valueToInt(value)); }else if (key == "backGroundImageData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); if (backGroundChildren) { std::string resType = backGroundChildren[2].GetValue(pCocoLoader); ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); panel->setBackGroundImage(backgroundValue.c_str(), imageFileNameType); } }else if(key == "capInsetsX"){ capsx = valueToFloat(value); }else if(key == "capInsetsY"){ capsy = valueToFloat(value); }else if(key == "capInsetsWidth"){ capsWidth = valueToFloat(value); }else if(key == "capInsetsHeight"){ capsHeight = valueToFloat(value); }else if (key == "layoutType"){ layoutType = (ui::LayoutType)valueToInt(value); } } panel->setBackGroundColorVector(CCPoint(bgcv1, bgcv2)); //TODO:FIXME the calling order of the following two calls matters //The backgrouhnd color type must be setted first panel->setBackGroundColorType(colorType); panel->setBackGroundColor(ccc3(scr, scg, scb),ccc3(ecr, ecg, ecb)); panel->setBackGroundColor(ccc3(cr, cg, cb)); panel->setBackGroundColorOpacity(bgColorOpacity); panel->setBackGroundImageColor(ccc3(_color.r, _color.g, _color.b)); panel->setBackGroundImageOpacity(_opacity); if (panel->isBackGroundImageScale9Enabled()) { panel->setBackGroundImageCapInsets(CCRect(capsx, capsy, capsWidth, capsHeight)); } this->endSetBasicProperties(widget); panel->setLayoutType(layoutType); }
void CheckBoxReader::setPropsFromBinary(cocos2d::ui::Widget *widget, CocoLoader *pCocoLoader, stExpCocoNode *pCocoNode) { ui::CheckBox *checkBox = static_cast<ui::CheckBox*>(widget); this->beginSetBasicProperties(widget); stExpCocoNode *stChildArray = pCocoNode->GetChildArray(pCocoLoader); for (int i = 0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(pCocoLoader); std::string value = stChildArray[i].GetValue(pCocoLoader); if (key == "ignoreSize") { widget->ignoreContentAdaptWithSize(valueToBool(value)); }else if(key == "sizeType"){ widget->setSizeType((ui::SizeType)valueToInt(value)); }else if(key == "positionType"){ widget->setPositionType((ui::PositionType)valueToInt(value)); }else if(key == "sizePercentX"){ _sizePercentX = valueToFloat(value); }else if(key == "sizePercentY"){ _sizePercentY = valueToFloat(value); }else if(key == "positionPercentX"){ _positionPercentX = valueToFloat(value); }else if(key == "positionPercentY"){ _positionPercentY = valueToFloat(value); } else if(key == "adaptScreen"){ _isAdaptScreen = valueToBool(value); } else if (key == "width"){ _width = valueToFloat(value); }else if(key == "height"){ _height = valueToFloat(value); }else if(key == "tag"){ widget->setTag(valueToInt(value)); }else if(key == "actiontag"){ widget->setActionTag(valueToInt(value)); }else if(key == "touchAble"){ widget->setTouchEnabled(valueToBool(value)); }else if(key == "name"){ std::string widgetName = value.empty() ? "default" : value; widget->setName(widgetName.c_str()); }else if(key == "x"){ _position.x = valueToFloat(value); }else if(key == "y"){ _position.y = valueToFloat(value); }else if(key == "scaleX"){ widget->setScaleX(valueToFloat(value)); }else if(key == "scaleY"){ widget->setScaleY(valueToFloat(value)); }else if(key == "rotation"){ widget->setRotation(valueToFloat(value)); }else if(key == "visible"){ widget->setVisible(valueToBool(value)); }else if(key == "ZOrder"){ widget->setZOrder(valueToInt(value)); }else if(key == "layoutParameter"){ stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(pCocoLoader); ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); ui::Margin mg; int paramType = -1; for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { std::string innerKey = layoutCocosNode[j].GetName(pCocoLoader); std::string innerValue = layoutCocosNode[j].GetValue(pCocoLoader); if (innerKey == "type") { paramType = valueToInt(innerValue); }else if(innerKey == "gravity"){ linearParameter->setGravity((cocos2d::ui::LinearGravity)valueToInt(innerValue)); }else if(innerKey == "relativeName"){ relativeParameter->setRelativeName(innerValue.c_str()); }else if(innerKey == "relativeToName"){ relativeParameter->setRelativeToWidgetName(innerValue.c_str()); }else if(innerKey == "align"){ relativeParameter->setAlign((cocos2d::ui::RelativeAlign)valueToInt(innerValue)); }else if(innerKey == "marginLeft"){ mg.left = valueToFloat(innerValue); }else if(innerKey == "marginTop"){ mg.top = valueToFloat(innerValue); }else if(innerKey == "marginRight"){ mg.right = valueToFloat(innerValue); }else if(innerKey == "marginDown"){ mg.bottom = valueToFloat(innerValue); } } linearParameter->setMargin(mg); relativeParameter->setMargin(mg); switch (paramType) { case 1: widget->setLayoutParameter(linearParameter); break; case 2: widget->setLayoutParameter(relativeParameter); default: break; } } else if (key == "opacity") { _opacity = valueToInt(value); } else if(key == "colorR"){ _color.r = valueToInt(value); }else if(key == "colorG"){ _color.g = valueToInt(value); }else if(key == "colorB") { _color.b = valueToInt(value); } else if(key == "flipX"){ widget->setFlipX(valueToBool(value)); }else if(key == "flipY"){ widget->setFlipY(valueToBool(value)); }else if(key == "anchorPointX"){ _originalAnchorPoint.x = valueToFloat(value); }else if(key == "anchorPointY"){ _originalAnchorPoint.y = valueToFloat(value); } else if (key == "backGroundBoxData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); checkBox->loadTextureBackGround(backgroundValue.c_str(), imageFileNameType); }else if(key == "backGroundBoxSelectedData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); checkBox->loadTextureBackGroundSelected(backgroundValue.c_str(), imageFileNameType); }else if(key == "frontCrossData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); checkBox->loadTextureFrontCross(backgroundValue.c_str(), imageFileNameType); }else if(key == "backGroundBoxDisabledData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); checkBox->loadTextureBackGroundDisabled(backgroundValue.c_str(), imageFileNameType); }else if (key == "frontCrossDisabledData"){ stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(pCocoLoader); std::string resType = backGroundChildren[2].GetValue(pCocoLoader);; ui::TextureResType imageFileNameType = (ui::TextureResType)valueToInt(resType); std::string backgroundValue = this->getResourcePath(pCocoLoader, &stChildArray[i], imageFileNameType); checkBox->loadTextureFrontCrossDisabled(backgroundValue.c_str(), imageFileNameType); } // else if (key == "selectedState"){ // checkBox->setSelectedState(valueToBool(value)); // } } this->endSetBasicProperties(widget); }