#include "CDRailActivatorComponent.h" #include "GeneralUtils.h" void CDRailActivatorComponentTable::LoadValuesFromDatabase() { auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RailActivatorComponent;"); auto& entries = GetEntriesMutable(); while (!tableData.eof()) { CDRailActivatorComponent entry; entry.id = tableData.getIntField("id", 0); entry.startAnimation = GeneralUtils::ASCIIToUTF16(tableData.getStringField("startAnim", "")); entry.loopAnimation = GeneralUtils::ASCIIToUTF16(tableData.getStringField("loopAnim", "")); entry.stopAnimation = GeneralUtils::ASCIIToUTF16(tableData.getStringField("stopAnim", "")); entry.startSound = GeneralUtils::ASCIIToUTF16(tableData.getStringField("startSound", "")); entry.loopSound = GeneralUtils::ASCIIToUTF16(tableData.getStringField("loopSound", "")); entry.stopSound = GeneralUtils::ASCIIToUTF16(tableData.getStringField("stopSound", "")); std::string loopEffectString(tableData.getStringField("effectIDs", "")); entry.loopEffectID = EffectPairFromString(loopEffectString); entry.preconditions = tableData.getStringField("preconditions", "-1"); entry.playerCollision = tableData.getIntField("playerCollision", 0); entry.cameraLocked = tableData.getIntField("cameraLocked", 0); std::string startEffectString(tableData.getStringField("StartEffectID", "")); entry.startEffectID = EffectPairFromString(startEffectString); std::string stopEffectString(tableData.getStringField("StopEffectID", "")); entry.stopEffectID = EffectPairFromString(stopEffectString); entry.damageImmune = tableData.getIntField("DamageImmune", 0); entry.noAggro = tableData.getIntField("NoAggro", 0); entry.showNameBillboard = tableData.getIntField("ShowNameBillboard", 0); entries.push_back(entry); tableData.nextRow(); } tableData.finalize(); } CDRailActivatorComponent CDRailActivatorComponentTable::GetEntryByID(int32_t id) const { for (const auto& entry : GetEntries()) { if (entry.id == id) return entry; } return {}; } std::pair CDRailActivatorComponentTable::EffectPairFromString(std::string& str) { const auto split = GeneralUtils::SplitString(str, ':'); if (split.size() == 2) { return { std::stoi(split.at(0)), GeneralUtils::ASCIIToUTF16(split.at(1)) }; } return {}; }