void UIStaticText::LoadFromYamlNode(YamlNode * node, UIYamlLoader * loader) { UIControl::LoadFromYamlNode(node, loader); YamlNode * fontNode = node->Get("font"); YamlNode * textNode = node->Get("text"); YamlNode * multilineNode = node->Get("multiline"); YamlNode * multilineBySymbolNode = node->Get("multilineBySymbol"); YamlNode * fittingNode = node->Get("fitting"); YamlNode * textColorNode = node->Get("textcolor"); YamlNode * shadowColorNode = node->Get("shadowcolor"); YamlNode * shadowOffsetNode = node->Get("shadowoffset"); if (fontNode) { const String & fontName = fontNode->AsString(); Font * font = loader->GetFontByName(fontName); SetFont(font); } bool multiline = loader->GetBoolFromYamlNode(multilineNode, false); bool multilineBySymbol = loader->GetBoolFromYamlNode(multilineBySymbolNode, false); SetMultiline(multiline, multilineBySymbol); if(fittingNode) { int32 fittingArray[] = {TextBlock::FITTING_DISABLED, TextBlock::FITTING_ENLARGE, TextBlock::FITTING_REDUCE, TextBlock::FITTING_POINTS}; String fittingValues[] = {"Disabled", "Enlarge", "Reduce", "Points"}; const String & fittinOption = fittingNode->AsString(); int32 fittingType = 0; for(int32 i = 0 ; i < 4; ++i) { size_t find = fittinOption.find(fittingValues[i]); if(find != fittinOption.npos) { fittingType |= fittingArray[i]; } } SetFittingOption(fittingType); } if (textNode) { SetText(LocalizedString(textNode->AsWString())); } if(textColorNode) { Vector4 c = textColorNode->AsVector4(); SetTextColor(Color(c.x, c.y, c.z, c.w)); } if(shadowColorNode) { Vector4 c = shadowColorNode->AsVector4(); SetShadowColor(Color(c.x, c.y, c.z, c.w)); } if(shadowOffsetNode) { SetShadowOffset(shadowOffsetNode->AsVector2()); } YamlNode * alignNode = node->Get("align"); SetAlign(loader->GetAlignFromYamlNode(alignNode)); // NULL is also OK here. }
RefPtr< PropertyLine<Vector3> > PropertyLineYamlReader::CreateVector3PropertyLineFromYamlNode( YamlNode * parentNode, const String & propertyName, RefPtr< PropertyLine<Vector3> > defaultPropertyLine /*= 0*/ ) { YamlNode * node = parentNode->Get(propertyName); if (!node)return defaultPropertyLine; if (node->GetType() == YamlNode::TYPE_STRING) { if(propertyName == "emissionAngle") // for old emissionAngle compatibility { Vector3 res(0, 0, 0); float32 angle = DegToRad(node->AsFloat()); res.x = cosf(angle); res.y = sinf(angle); return RefPtr< PropertyLine<Vector3> >(new PropertyLineValue<Vector3>(res)); } float32 v = node->AsFloat(); return RefPtr< PropertyLine<Vector3> >(new PropertyLineValue<Vector3>(Vector3(v, v, v))); } else if (node->GetType() == YamlNode::TYPE_ARRAY) { if(node->GetCount() == 2) // for 2D forces compatibility { Vector3 res(node->AsVector2()); res.z = 0.0f; return RefPtr< PropertyLine<Vector3> >(new PropertyLineValue<Vector3>(res)); } if (node->GetCount() == 3 || node->GetCount() == 2) { Vector3 res(0.0f, 0.0f, 0.0f); res = node->AsVector3(); return RefPtr< PropertyLine<Vector3> >(new PropertyLineValue<Vector3>(res)); } RefPtr< PropertyLineKeyframes<Vector3> > keyframes (new PropertyLineKeyframes<Vector3>()); for (int k = 0; k < node->GetCount() / 2; ++k) { YamlNode * time = node->Get(k * 2); YamlNode * value = node->Get(k * 2 + 1); if (time && value) { if (value->GetType() == YamlNode::TYPE_ARRAY) { keyframes->AddValue(time->AsFloat(), value->AsVector3()); } else { Vector3 v = value->AsVector3(); if(propertyName == "emissionAngle") // for old emissionAngle compatibility { float32 angle = DegToRad(value->AsFloat()); v.x = cosf(angle); v.y = sinf(angle); v.z = 0.0f; } keyframes->AddValue(time->AsFloat(), v); } } } return keyframes; } return RefPtr< PropertyLine<Vector3> >(); }
void UIButton::LoadFromYamlNode(YamlNode * node, UIYamlLoader * loader) { UIControl::LoadFromYamlNode(node, loader); //int32 stateArray[] = {STATE_NORMAL, STATE_PRESSED_INSIDE, STATE_PRESSED_OUTSIDE, STATE_DISABLED, STATE_SELECTED, STATE_HOVER}; //String statePostfix[] = {"Normal", "PressedInside", "PressedOutside", "Disabled", "Selected", "Hover"}; for (int k = 0; k < STATE_COUNT; ++k) { YamlNode * stateSpriteNode = node->Get(Format("stateSprite%s", statePostfix[k].c_str())); if (stateSpriteNode) { YamlNode * spriteNode = stateSpriteNode->Get(0); YamlNode * frameNode = stateSpriteNode->Get(1); YamlNode * backgroundModificationNode = NULL; if(stateSpriteNode->GetCount() > 2) { backgroundModificationNode = stateSpriteNode->Get(2); } int32 frame = 0; if (frameNode)frame = frameNode->AsInt(); if (spriteNode) { SetStateSprite(stateArray[k], spriteNode->AsString(), frame); } if (backgroundModificationNode) { stateBacks[k]->SetModification(backgroundModificationNode->AsInt()); } } YamlNode * stateDrawTypeNode = node->Get(Format("stateDrawType%s", statePostfix[k].c_str())); if (stateDrawTypeNode) { UIControlBackground::eDrawType type = (UIControlBackground::eDrawType)loader->GetDrawTypeFromNode(stateDrawTypeNode); SetStateDrawType(stateArray[k],type); YamlNode * leftRightStretchCapNode = node->Get(Format("leftRightStretchCap%s", statePostfix[k].c_str())); YamlNode * topBottomStretchCapNode = node->Get(Format("topBottomStretchCap%s", statePostfix[k].c_str())); if(leftRightStretchCapNode) { float32 leftStretchCap = leftRightStretchCapNode->AsFloat(); GetActualBackground(stateArray[k])->SetLeftRightStretchCap(leftStretchCap); } if(topBottomStretchCapNode) { float32 topStretchCap = topBottomStretchCapNode->AsFloat(); GetActualBackground(stateArray[k])->SetTopBottomStretchCap(topStretchCap); } } else { SetStateDrawType(stateArray[k],UIControlBackground::DRAW_ALIGNED); } YamlNode * stateAlignNode = node->Get(Format("stateAlign%s", statePostfix[k].c_str())); if (stateAlignNode) { int32 align = loader->GetAlignFromYamlNode(stateAlignNode); SetStateAlign(stateArray[k],align); } YamlNode * stateFontNode = node->Get(Format("stateFont%s", statePostfix[k].c_str())); if (stateFontNode) { Font * font = loader->GetFontByName(stateFontNode->AsString()); if (font)SetStateFont(stateArray[k], font); } YamlNode * stateTextNode = node->Get(Format("stateText%s", statePostfix[k].c_str())); if (stateTextNode) { SetStateText(stateArray[k], LocalizedString(stateTextNode->AsWString())); } YamlNode * stateTextColorNode = node->Get(Format("stateTextcolor%s", statePostfix[k].c_str())); if (stateTextColorNode) { Vector4 c = stateTextColorNode->AsVector4(); SetStateFontColor(stateArray[k], Color(c.x, c.y, c.z, c.w)); } YamlNode * stateShadowColorNode = node->Get(Format("stateShadowcolor%s", statePostfix[k].c_str())); if (stateShadowColorNode) { Vector4 c = stateShadowColorNode->AsVector4(); SetStateShadowColor(stateArray[k], Color(c.x, c.y, c.z, c.w)); } YamlNode * stateShadowOffsetNode = node->Get(Format("stateShadowoffset%s", statePostfix[k].c_str())); if (stateShadowOffsetNode) { SetStateShadowOffset(stateArray[k], stateShadowOffsetNode->AsVector2()); } YamlNode * colorInheritNode = node->Get(Format("stateColorInherit%s", statePostfix[k].c_str())); if(colorInheritNode) { UIControlBackground::eColorInheritType type = (UIControlBackground::eColorInheritType)loader->GetColorInheritTypeFromNode(colorInheritNode); GetActualBackground(stateArray[k])->SetColorInheritType(type); } YamlNode * colorNode = node->Get(Format("stateColor%s", statePostfix[k].c_str())); if(colorNode) { Color color = loader->GetColorFromYamlNode(colorNode); GetActualBackground(stateArray[k])->SetColor(color); } } }
void UITextField::LoadFromYamlNode(YamlNode * node, UIYamlLoader * loader) { UIControl::LoadFromYamlNode(node, loader); YamlNode * textNode = node->Get("text"); if (textNode) { SetText(textNode->AsWString()); } YamlNode * fontNode = node->Get("font"); if (fontNode) { Font * font = loader->GetFontByName(fontNode->AsString()); if (font) SetFont(font); } if(staticText) { staticText->SetRect(Rect(0,0,GetRect().dx, GetRect().dy)); YamlNode * textColorNode = node->Get("textcolor"); YamlNode * shadowColorNode = node->Get("shadowcolor"); YamlNode * shadowOffsetNode = node->Get("shadowoffset"); YamlNode * textAlignNode = node->Get("textalign"); if(textColorNode) { Vector4 c = textColorNode->AsVector4(); SetTextColor(Color(c.x, c.y, c.z, c.w)); } if(shadowColorNode) { Vector4 c = shadowColorNode->AsVector4(); SetShadowColor(Color(c.x, c.y, c.z, c.w)); } if(shadowOffsetNode) { SetShadowOffset(shadowOffsetNode->AsVector2()); } if(textAlignNode) { SetTextAlign(loader->GetAlignFromYamlNode(textAlignNode)); } } //InitAfterYaml(); #if 0 YamlNode * orientNode = node->Get("orientation"); if (orientNode) { if (orientNode->AsString() == "Vertical") orientation = ORIENTATION_VERTICAL; else if (orientNode->AsString() == "Horizontal") orientation = ORIENTATION_HORIZONTAL; } // TODO InitAfterYaml(); #endif }