#include "CDRailActivatorComponent.h" #include "GeneralUtils.h" CDRailActivatorComponentTable::CDRailActivatorComponentTable() { auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RailActivatorComponent;"); while (!tableData.eof()) { CDRailActivatorComponent entry; entry.id = tableData.getIntField(0); std::string startAnimation(tableData.getStringField(1, "")); entry.startAnimation = GeneralUtils::ASCIIToUTF16(startAnimation); std::string loopAnimation(tableData.getStringField(2, "")); entry.loopAnimation = GeneralUtils::ASCIIToUTF16(loopAnimation); std::string stopAnimation(tableData.getStringField(3, "")); entry.stopAnimation = GeneralUtils::ASCIIToUTF16(stopAnimation); std::string startSound(tableData.getStringField(4, "")); entry.startSound = GeneralUtils::ASCIIToUTF16(startSound); std::string loopSound(tableData.getStringField(5, "")); entry.loopSound = GeneralUtils::ASCIIToUTF16(loopSound); std::string stopSound(tableData.getStringField(6, "")); entry.stopSound = GeneralUtils::ASCIIToUTF16(stopSound); std::string loopEffectString(tableData.getStringField(7, "")); entry.loopEffectID = EffectPairFromString(loopEffectString); entry.preconditions = tableData.getStringField(8, "-1"); entry.playerCollision = tableData.getIntField(9, 0); entry.cameraLocked = tableData.getIntField(10, 0); std::string startEffectString(tableData.getStringField(11, "")); entry.startEffectID = EffectPairFromString(startEffectString); std::string stopEffectString(tableData.getStringField(12, "")); entry.stopEffectID = EffectPairFromString(stopEffectString); entry.damageImmune = tableData.getIntField(13, 0); entry.noAggro = tableData.getIntField(14, 0); entry.showNameBillboard = tableData.getIntField(15, 0); m_Entries.push_back(entry); tableData.nextRow(); } tableData.finalize(); } CDRailActivatorComponentTable::~CDRailActivatorComponentTable() = default; std::string CDRailActivatorComponentTable::GetName() const { return "RailActivatorComponent"; } CDRailActivatorComponent CDRailActivatorComponentTable::GetEntryByID(int32_t id) const { for (const auto& entry : m_Entries) { if (entry.id == id) return entry; } return {}; } std::vector CDRailActivatorComponentTable::GetEntries() const { return m_Entries; } 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 {}; }