yaml 2.6 bugs

This commit is contained in:
Eduardo Bart 2011-05-14 00:07:08 -03:00
parent 7e982af21f
commit 159de5d511
3 changed files with 20 additions and 23 deletions

View File

@ -66,8 +66,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UIButtonSkin(name)); UIElementSkinPtr skin = UIElementSkinPtr(new UIButtonSkin(name));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }
@ -79,8 +78,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UIElementSkin(name, UI::Panel)); UIElementSkinPtr skin = UIElementSkinPtr(new UIElementSkin(name, UI::Panel));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }
@ -92,8 +90,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UIWindowSkin(name)); UIElementSkinPtr skin = UIElementSkinPtr(new UIWindowSkin(name));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }
@ -105,8 +102,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UILabelSkin(name)); UIElementSkinPtr skin = UIElementSkinPtr(new UILabelSkin(name));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }
@ -119,8 +115,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UITextEditSkin(name)); UIElementSkinPtr skin = UIElementSkinPtr(new UITextEditSkin(name));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }
@ -133,8 +128,7 @@ void UISkins::load(const std::string& skinsFile)
it.first() >> name; it.first() >> name;
UIElementSkinPtr skin = UIElementSkinPtr(new UIElementSkin(name, UI::LineDecoration)); UIElementSkinPtr skin = UIElementSkinPtr(new UIElementSkin(name, UI::LineDecoration));
if(it.second().Type() == YAML::NodeType::Map) skin->load(it.second());
skin->load(it.second());
m_elementSkins.push_back(skin); m_elementSkins.push_back(skin);
} }
} }

View File

@ -75,7 +75,8 @@ template<class T>
inline T yamlRead(const YAML::Node& node, const char *name) inline T yamlRead(const YAML::Node& node, const char *name)
{ {
T value; T value;
node[name] >> value; if(node.Type() == YAML::NodeType::Map)
node[name] >> value;
return value; return value;
} }
@ -83,14 +84,14 @@ template<class T>
inline T yamlRead(const YAML::Node& node, const char *name, const T& defaultValue) inline T yamlRead(const YAML::Node& node, const char *name, const T& defaultValue)
{ {
T value = defaultValue; T value = defaultValue;
if(node.FindValue(name)) if(node.Type() == YAML::NodeType::Map && node.FindValue(name))
node[name] >> value; node[name] >> value;
return value; return value;
} }
inline bool yamlHasValue(const YAML::Node& node, const char *name) inline bool yamlHasValue(const YAML::Node& node, const char *name)
{ {
return node.FindValue(name) != NULL; return (node.Type() == YAML::NodeType::Map && node.FindValue(name) != NULL);
} }
inline std::string yamlErrorDesc(const YAML::Node& node, const std::string& error) inline std::string yamlErrorDesc(const YAML::Node& node, const std::string& error)
@ -107,13 +108,15 @@ template<class A, class B>
inline std::map<A,B> yamlReadMap(const YAML::Node& node, const char *name) inline std::map<A,B> yamlReadMap(const YAML::Node& node, const char *name)
{ {
std::map<A,B> map; std::map<A,B> map;
if(const YAML::Node* mapNode = node.FindValue(name)) { if(node.Type() == YAML::NodeType::Map) {
for(auto it = mapNode->begin(); it != mapNode->end(); ++it) { if(const YAML::Node* mapNode = node.FindValue(name)) {
A a; for(auto it = mapNode->begin(); it != mapNode->end(); ++it) {
B b; A a;
it.first() >> a; B b;
it.second() >> b; it.first() >> a;
map[a] = b; it.second() >> b;
map[a] = b;
}
} }
} }
return map; return map;

View File

@ -115,7 +115,7 @@ int main(int argc, const char *argv[])
g_engine.enableFpsCounter(); g_engine.enableFpsCounter();
// load ui skins // load ui skins
g_uiSkins.load("skins/lightness.yml"); g_uiSkins.load("skins/tibiaskin.yml");
// load script modules // load script modules
g_lua.loadAllModules(); g_lua.loadAllModules();