DarkflameServer/dDatabase/CDClientDatabase/CDClientTables/CDRailActivatorComponent.cpp

65 lines
2.3 KiB
C++
Raw Normal View History

#include "CDRailActivatorComponent.h"
#include "GeneralUtils.h"
void CDRailActivatorComponentTable::LoadValuesFromDatabase() {
2022-07-28 13:39:57 +00:00
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RailActivatorComponent;");
auto& entries = GetEntriesMutable();
2022-07-28 13:39:57 +00:00
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", ""));
2022-07-28 13:39:57 +00:00
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", ""));
2022-07-28 13:39:57 +00:00
entry.startEffectID = EffectPairFromString(startEffectString);
std::string stopEffectString(tableData.getStringField("StopEffectID", ""));
2022-07-28 13:39:57 +00:00
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);
2022-07-28 13:39:57 +00:00
tableData.nextRow();
}
2022-07-28 13:39:57 +00:00
tableData.finalize();
}
CDRailActivatorComponent CDRailActivatorComponentTable::GetEntryByID(int32_t id) const {
for (const auto& entry : GetEntries()) {
2022-07-28 13:39:57 +00:00
if (entry.id == id)
return entry;
}
2022-07-28 13:39:57 +00:00
return {};
}
2022-07-28 13:39:57 +00:00
std::pair<uint32_t, std::u16string> 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)) };
}
2022-07-28 13:39:57 +00:00
return {};
}