49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#include "menu.hpp"
|
|
|
|
#include "../../log.hpp"
|
|
|
|
#include <format>
|
|
|
|
#include "util.hpp"
|
|
|
|
using namespace tinyxml2;
|
|
using namespace game::util;
|
|
|
|
namespace game::resource::xml
|
|
{
|
|
Menu::Menu(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 soundRootPath{};
|
|
query_string_attribute(root, "SoundRootPath", &soundRootPath);
|
|
|
|
std::string fontRootPath{};
|
|
query_string_attribute(root, "FontRootPath", &fontRootPath);
|
|
|
|
query_font(root, "Font", archive, fontRootPath, font);
|
|
root->QueryFloatAttribute("Rounding", &rounding);
|
|
|
|
if (auto element = root->FirstChildElement("Sounds"))
|
|
{
|
|
query_sound_entry_collection(element, "Open", archive, soundRootPath, sounds.open);
|
|
query_sound_entry_collection(element, "Close", archive, soundRootPath, sounds.close);
|
|
query_sound_entry_collection(element, "Hover", archive, soundRootPath, sounds.hover);
|
|
query_sound_entry_collection(element, "Select", archive, soundRootPath, sounds.select);
|
|
}
|
|
}
|
|
|
|
isValid = true;
|
|
|
|
logger.info(std::format("Initialized menu schema: {}", path.c_str()));
|
|
}
|
|
|
|
bool Menu::is_valid() const { return isValid; };
|
|
}
|