commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
93
include/engine/ui/ui_item_nml.cpp
Normal file
93
include/engine/ui/ui_item_nml.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "ui/ui_item.h"
|
||||
#include "math/vector_nml.h"
|
||||
#include "log/log.h"
|
||||
|
||||
using namespace GS::S2D;
|
||||
using GS::NML::Tag;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool Item::FromMetaTag(Tag &tag)
|
||||
{
|
||||
if (tag.name != "Item")
|
||||
__ERR__(__LOG_E__ << "Could not parse sprite, incorrect root tag (" << tag.name << ").\n", false)
|
||||
|
||||
Reset();
|
||||
|
||||
NMLTagForeach(pt, tag)
|
||||
{
|
||||
if (pt->name == "Uid")
|
||||
uid = pt->GetUnsigned();
|
||||
else if (pt->name == "Name")
|
||||
name = pt->GetString();
|
||||
|
||||
else if (pt->name == "Active")
|
||||
item_flags |= Flag_ItemActive;
|
||||
|
||||
else if (pt->name == "Position")
|
||||
tVectorFromMetaTag(position, *pt);
|
||||
else if (pt->name == "Size")
|
||||
{
|
||||
Vector2 v;
|
||||
tVectorFromMetaTag(v, *pt);
|
||||
SetSize(v.x, v.y);
|
||||
}
|
||||
else if (pt->name == "Pivot")
|
||||
tVectorFromMetaTag(pivot, *pt);
|
||||
else if (pt->name == "Scale")
|
||||
tVectorFromMetaTag(scale, *pt);
|
||||
else if (pt->name == "Angle")
|
||||
angle = pt->GetReal();
|
||||
else if (pt->name == "ZOrder")
|
||||
zorder = pt->GetReal();
|
||||
|
||||
else if (pt->name == "ScriptedObject")
|
||||
{
|
||||
if (scripted_object)
|
||||
scripted_object->FromMetaTag(*pt);
|
||||
}
|
||||
else __LOG_W__ << "Unknown tag '" << pt->name << "' in <Item2d>.\n";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
Tag *Item::AsMetaTag() const
|
||||
{
|
||||
Tag *root = new Tag("Item");
|
||||
if (!root)
|
||||
__ERR__(__LOG_E__ << "Could not create root tag to serialize.\n", NULL)
|
||||
|
||||
root->AddChild("Name", name.toUtf8());
|
||||
root->AddChild("Uid", GetUid());
|
||||
|
||||
if (item_flags.IsSet(Flag_ItemActive))
|
||||
root->AddChild("Active");
|
||||
|
||||
root->AddChild(tVectorAsMetaTag(position, "Position"));
|
||||
root->AddChild(tVectorAsMetaTag(size, "Size"));
|
||||
|
||||
if ((pivot.x != 0) || (pivot.y != 0))
|
||||
root->AddChild(tVectorAsMetaTag(pivot, "Pivot"));
|
||||
if ((scale.x != 1) || (scale.y != 1))
|
||||
root->AddChild(tVectorAsMetaTag(scale, "Scale"));
|
||||
|
||||
if (GetZOrder() != 0.5)
|
||||
root->AddChild("ZOrder", GetZOrder());
|
||||
if (GetRotation() != 0)
|
||||
root->AddChild("Angle", angle);
|
||||
|
||||
// Components.
|
||||
if (scripted_object.IsValid())
|
||||
root->AddChild(scripted_object->AsMetaTag());
|
||||
|
||||
return root;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user