This commit is contained in:
52
src/resource/xml/cursor.cpp
Normal file
52
src/resource/xml/cursor.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
#include "cursor.hpp"
|
||||
|
||||
#include "../../log.hpp"
|
||||
|
||||
using namespace tinyxml2;
|
||||
using namespace game::util;
|
||||
|
||||
namespace game::resource::xml
|
||||
{
|
||||
Cursor::Cursor(const physfs::Path& path)
|
||||
{
|
||||
XMLDocument document;
|
||||
|
||||
if (document_load(path, document) != XML_SUCCESS) return;
|
||||
|
||||
auto archive = path.directory_get();
|
||||
|
||||
if (auto root = document.RootElement())
|
||||
{
|
||||
std::string textureRootPath{};
|
||||
query_string_attribute(root, "TextureRootPath", &textureRootPath);
|
||||
|
||||
std::string soundRootPath{};
|
||||
query_string_attribute(root, "SoundRootPath", &soundRootPath);
|
||||
|
||||
query_anm2(root, "Anm2", archive, textureRootPath, anm2);
|
||||
|
||||
if (auto element = root->FirstChildElement("Animations"))
|
||||
{
|
||||
query_animation_entry_collection(element, "Idle", animations.idle);
|
||||
query_animation_entry_collection(element, "Hover", animations.hover);
|
||||
query_animation_entry_collection(element, "Grab", animations.grab);
|
||||
query_animation_entry_collection(element, "Pan", animations.pan);
|
||||
query_animation_entry_collection(element, "Zoom", animations.zoom);
|
||||
query_animation_entry_collection(element, "Return", animations.return_);
|
||||
}
|
||||
|
||||
if (auto element = root->FirstChildElement("Sounds"))
|
||||
{
|
||||
query_sound_entry_collection(element, "Grab", archive, soundRootPath, sounds.grab);
|
||||
query_sound_entry_collection(element, "Release", archive, soundRootPath, sounds.release);
|
||||
query_sound_entry_collection(element, "Throw", archive, soundRootPath, sounds.throw_);
|
||||
}
|
||||
}
|
||||
|
||||
isValid = true;
|
||||
|
||||
logger.info(std::format("Initialized area schema: {}", path.c_str()));
|
||||
}
|
||||
|
||||
bool Cursor::is_valid() const { return isValid; };
|
||||
}
|
||||
Reference in New Issue
Block a user