本文整理汇总了C++中XML::get_nodes方法的典型用法代码示例。如果您正苦于以下问题:C++ XML::get_nodes方法的具体用法?C++ XML::get_nodes怎么用?C++ XML::get_nodes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XML
的用法示例。
在下文中一共展示了XML::get_nodes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load
void Sprite::load(std::string xml_filename, std::string image_directory, bool absolute_path)
{
if (absolute_path == false) {
xml_filename = "sprites/" + xml_filename;
image_directory = "sprites/" + image_directory;
}
this->xml_filename = xml_filename;
this->image_directory = image_directory;
XML *xml = new XML(xml_filename);
std::list<XML *> nodes = xml->get_nodes();
std::list<XML *>::iterator it;
bool first = true;
for (it = nodes.begin(); it != nodes.end(); it++) {
XML *anim = *it;
int count;
std::vector<Image *> images;
for (count = 0; count < 1024 /* NOTE: hardcoded max frames */; count++) {
std::string filename = image_directory + "/" + anim->get_name() + itos(count) + ".tga";
Image *image;
try {
image = new Image(filename, true);
}
catch (Error e) {
break;
}
images.push_back(image);
}
XML *loop_xml = anim->find("loop");
bool looping;
if (loop_xml && loop_xml->get_value() == "false") {
looping = false;
}
else {
looping = true;
}
XML *delays = anim->find("delays");
std::vector<Uint32> delays_vector;
if (delays == 0) {
XML *delay = anim->find("delay");
if (delay == 0) {
for (int i = 0; i < count; i++) {
delays_vector.push_back(100);
}
}
else {
Uint32 delay_int = atoi(delay->get_value().c_str());
for (int i = 0; i < count; i++) {
delays_vector.push_back(delay_int);
}
}
}
else {
for (int i = 0; i < count; i++) {
XML *delay = delays->find(itos(i));
if (delay == 0) {
delays_vector.push_back(100);
}
else {
delays_vector.push_back(atoi(delay->get_value().c_str()));
}
}
}
Uint32 total_delays = 0;
for (size_t i = 0; i < delays_vector.size(); i++) {
total_delays += delays_vector[i];
}
Animation *a;
if (animations.find(anim->get_name()) == animations.end()) {
a = new Animation();
a->images = images;
a->delays = delays_vector;
a->total_delays = total_delays;
a->rand_start = anim->find("rand_start") != 0;
a->looping = looping;
animations[anim->get_name()] = a;
}
else {
throw Error("Duplicate animation!");
}
if (first) {
first = false;
current_animation = anim->get_name();
}
}
delete xml;
}