31 #ifndef CRAB_LOADERS_H 32 #define CRAB_LOADERS_H 34 #include "common/debug.h" 35 #include "common/path.h" 36 #include "common/str.h" 37 #include "crab/color.h" 38 #include "crab/gametype.h" 39 #include "crab/numstr.h" 40 #include "crab/rapidxml/rapidxml.hpp" 46 bool nodeValid(rapidxml::xml_node<char> *node,
const bool &echo =
true);
47 bool nodeValid(
const Common::String &name, rapidxml::xml_node<char> *parentNode,
const bool &echo =
true);
56 bool loadNum(T &val,
const Common::String &name, rapidxml::xml_node<char> *node,
const bool &echo =
true) {
57 if (node->first_attribute(name.c_str()) !=
nullptr)
58 val = stringToNumber<T>(node->first_attribute(name.c_str())->value());
61 warning(
"XML: attribute %s not found in node %s -> %s", name.c_str(), node->parent()->name(), node->name());
70 bool loadEnum(T &val,
const Common::String &name, rapidxml::xml_node<char> *node,
const bool &echo =
true) {
71 if (node->first_attribute(name.c_str()) !=
nullptr)
72 val =
static_cast<T
>(stringToNumber<int>(node->first_attribute(name.c_str())->value()));
75 warning(
"XML: attribute %s not found in node %s -> %s", name.c_str(), node->parent()->name(), node->name());
83 bool loadColor(Color &col, rapidxml::xml_node<char> *node,
const bool &echo =
true,
87 bool loadColor(
int &col, rapidxml::xml_node<char> *node,
const bool &echo =
true);
91 bool loadXY(T &x, T &y, rapidxml::xml_node<char> *node,
const bool &echo =
true) {
92 bool result = loadNum(x,
"x", node, echo);
93 result = loadNum(y,
"y", node, echo) && result;
100 bool loadXYZ(T &x, T &y, T &z, rapidxml::xml_node<char> *node,
const bool &echo =
true) {
101 bool result = loadNum(x,
"x", node, echo);
102 result = loadNum(y,
"y", node, echo) && result;
103 result = loadNum(z,
"z", node, echo) && result;
109 bool loadBool(
bool &var,
const Common::String &name, rapidxml::xml_node<char> *node,
const bool &echo =
true);
112 void saveBool(
const bool &var,
const char *name, rapidxml::xml_document<> &doc, rapidxml::xml_node<char> *root);
115 bool loadStatType(pyrodactyl::stat::StatType &type, rapidxml::xml_node<char> *node,
const bool &echo =
true);
117 bool loadAlign(Align &align, rapidxml::xml_node<char> *node,
const bool &echo =
true,
const Common::String &name =
"align");
118 bool loadDirection(Direction &dir, rapidxml::xml_node<char> *node,
const bool &echo =
true,
const Common::String &name =
"dir");
120 bool loadTextureFlipType(TextureFlipType &flip, rapidxml::xml_node<char> *node,
const bool &echo =
true);
127 #endif // CRAB_LOADERS_H
void warning(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: moveeffect.h:37