#include "otpch.h" #include "effects.h" #include "pugicast.h" #include "tools.h" bool Effects::reload() { effects.clear(); return loadFromXml(); } bool Effects::loadFromXml() { pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file("data/XML/effects.xml"); if (!result) { printXMLError("Error - Effects::loadFromXml", "data/XML/effects.xml", result); return false; } for (auto effectNode : doc.child("effects").children()) { effects.emplace_back( static_cast(pugi::cast(effectNode.attribute("id").value())), // Changed from uint8_t to uint16_t pugi::cast(effectNode.attribute("clientid").value()), effectNode.attribute("name").as_string(), pugi::cast(effectNode.attribute("speed").value()), effectNode.attribute("premium").as_bool() ); } effects.shrink_to_fit(); return true; } Effect* Effects::getEffectByID(uint16_t id) // Changed from uint8_t to uint16_t { auto it = std::find_if(effects.begin(), effects.end(), [id](const Effect& effect) { return effect.id == id; }); return it != effects.end() ? &*it : nullptr; } Effect* Effects::getEffectByName(const std::string& name) { auto effectName = name.c_str(); for (auto& it : effects) { if (strcasecmp(effectName, it.name.c_str()) == 0) { return ⁢ } } return nullptr; } Effect* Effects::getEffectByClientID(uint16_t clientId) { auto it = std::find_if(effects.begin(), effects.end(), [clientId](const Effect& effect) { return effect.clientId == clientId; }); return it != effects.end() ? &*it : nullptr; }