mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-21 21:17:25 +00:00
chore: Table Loading Improvements (#1492)
* Assorted pet improvements * remove unecessary include * updates to address some feedback * fixed database code for testing * messinng around with tables * updated to address feedback * fix world hang * Remove at() in CDLootTableTable.cpp * Uncapitalize LOT variable * Uncapitalize LOT variable
This commit is contained in:
parent
6e3b5acede
commit
3a6313a3ba
@ -58,7 +58,7 @@ void CDLootTableTable::LoadValuesFromDatabase() {
|
|||||||
CDLootTable entry;
|
CDLootTable entry;
|
||||||
uint32_t lootTableIndex = tableData.getIntField("LootTableIndex", -1);
|
uint32_t lootTableIndex = tableData.getIntField("LootTableIndex", -1);
|
||||||
|
|
||||||
entries[lootTableIndex].push_back(ReadRow(tableData));
|
entries[lootTableIndex].emplace_back(ReadRow(tableData));
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
for (auto& [id, table] : entries) {
|
for (auto& [id, table] : entries) {
|
||||||
@ -66,7 +66,7 @@ void CDLootTableTable::LoadValuesFromDatabase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const LootTableEntries& CDLootTableTable::GetTable(uint32_t tableId) {
|
const LootTableEntries& CDLootTableTable::GetTable(const uint32_t tableId) {
|
||||||
auto& entries = GetEntriesMutable();
|
auto& entries = GetEntriesMutable();
|
||||||
auto itr = entries.find(tableId);
|
auto itr = entries.find(tableId);
|
||||||
if (itr != entries.end()) {
|
if (itr != entries.end()) {
|
||||||
@ -79,7 +79,7 @@ const LootTableEntries& CDLootTableTable::GetTable(uint32_t tableId) {
|
|||||||
|
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDLootTable entry;
|
CDLootTable entry;
|
||||||
entries[tableId].push_back(ReadRow(tableData));
|
entries[tableId].emplace_back(ReadRow(tableData));
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
SortTable(entries[tableId]);
|
SortTable(entries[tableId]);
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDLootTable {
|
struct CDLootTable {
|
||||||
uint32_t itemid; //!< The LOT of the item
|
uint32_t itemid; //!< The LOT of the item
|
||||||
uint32_t LootTableIndex; //!< The Loot Table Index
|
uint32_t LootTableIndex; //!< The Loot Table Index
|
||||||
@ -20,6 +22,5 @@ private:
|
|||||||
public:
|
public:
|
||||||
void LoadValuesFromDatabase();
|
void LoadValuesFromDatabase();
|
||||||
// Queries the table with a custom "where" clause
|
// Queries the table with a custom "where" clause
|
||||||
const LootTableEntries& GetTable(uint32_t tableId);
|
const LootTableEntries& GetTable(const uint32_t tableId);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ void CDMissionEmailTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionEmail");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionEmail");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDMissionEmail entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.ID = tableData.getIntField("ID", -1);
|
entry.ID = tableData.getIntField("ID", -1);
|
||||||
entry.messageType = tableData.getIntField("messageType", -1);
|
entry.messageType = tableData.getIntField("messageType", -1);
|
||||||
entry.notificationGroup = tableData.getIntField("notificationGroup", -1);
|
entry.notificationGroup = tableData.getIntField("notificationGroup", -1);
|
||||||
@ -30,11 +30,8 @@ void CDMissionEmailTable::LoadValuesFromDatabase() {
|
|||||||
entry.locStatus = tableData.getIntField("locStatus", -1);
|
entry.locStatus = tableData.getIntField("locStatus", -1);
|
||||||
entry.gate_version = tableData.getStringField("gate_version", "");
|
entry.gate_version = tableData.getStringField("gate_version", "");
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Queries the table with a custom "where" clause
|
//! Queries the table with a custom "where" clause
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDMissionEmail {
|
struct CDMissionEmail {
|
||||||
uint32_t ID;
|
uint32_t ID;
|
||||||
uint32_t messageType;
|
uint32_t messageType;
|
||||||
|
@ -20,18 +20,15 @@ void CDMissionNPCComponentTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionNPCComponent");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionNPCComponent");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDMissionNPCComponent entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.id = tableData.getIntField("id", -1);
|
entry.id = tableData.getIntField("id", -1);
|
||||||
entry.missionID = tableData.getIntField("missionID", -1);
|
entry.missionID = tableData.getIntField("missionID", -1);
|
||||||
entry.offersMission = tableData.getIntField("offersMission", -1) == 1 ? true : false;
|
entry.offersMission = tableData.getIntField("offersMission", -1) == 1 ? true : false;
|
||||||
entry.acceptsMission = tableData.getIntField("acceptsMission", -1) == 1 ? true : false;
|
entry.acceptsMission = tableData.getIntField("acceptsMission", -1) == 1 ? true : false;
|
||||||
entry.gate_version = tableData.getStringField("gate_version", "");
|
entry.gate_version = tableData.getStringField("gate_version", "");
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Queries the table with a custom "where" clause
|
//! Queries the table with a custom "where" clause
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDMissionNPCComponent {
|
struct CDMissionNPCComponent {
|
||||||
uint32_t id; //!< The ID
|
uint32_t id; //!< The ID
|
||||||
uint32_t missionID; //!< The Mission ID
|
uint32_t missionID; //!< The Mission ID
|
||||||
@ -17,4 +19,3 @@ public:
|
|||||||
// Queries the table with a custom "where" clause
|
// Queries the table with a custom "where" clause
|
||||||
std::vector<CDMissionNPCComponent> Query(std::function<bool(CDMissionNPCComponent)> predicate);
|
std::vector<CDMissionNPCComponent> Query(std::function<bool(CDMissionNPCComponent)> predicate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ void CDMissionTasksTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionTasks");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MissionTasks");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDMissionTasks entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.id = tableData.getIntField("id", -1);
|
entry.id = tableData.getIntField("id", -1);
|
||||||
UNUSED(entry.locStatus = tableData.getIntField("locStatus", -1));
|
UNUSED(entry.locStatus = tableData.getIntField("locStatus", -1));
|
||||||
entry.taskType = tableData.getIntField("taskType", -1);
|
entry.taskType = tableData.getIntField("taskType", -1);
|
||||||
@ -35,11 +35,8 @@ void CDMissionTasksTable::LoadValuesFromDatabase() {
|
|||||||
UNUSED(entry.localize = tableData.getIntField("localize", -1) == 1 ? true : false);
|
UNUSED(entry.localize = tableData.getIntField("localize", -1) == 1 ? true : false);
|
||||||
UNUSED(entry.gate_version = tableData.getStringField("gate_version", ""));
|
UNUSED(entry.gate_version = tableData.getStringField("gate_version", ""));
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<CDMissionTasks> CDMissionTasksTable::Query(std::function<bool(CDMissionTasks)> predicate) {
|
std::vector<CDMissionTasks> CDMissionTasksTable::Query(std::function<bool(CDMissionTasks)> predicate) {
|
||||||
@ -51,7 +48,7 @@ std::vector<CDMissionTasks> CDMissionTasksTable::Query(std::function<bool(CDMiss
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<CDMissionTasks*> CDMissionTasksTable::GetByMissionID(uint32_t missionID) {
|
std::vector<CDMissionTasks*> CDMissionTasksTable::GetByMissionID(const uint32_t missionID) {
|
||||||
std::vector<CDMissionTasks*> tasks;
|
std::vector<CDMissionTasks*> tasks;
|
||||||
|
|
||||||
// TODO: this should not be linear(?) and also shouldnt need to be a pointer
|
// TODO: this should not be linear(?) and also shouldnt need to be a pointer
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDMissionTasks {
|
struct CDMissionTasks {
|
||||||
uint32_t id; //!< The Mission ID that the task belongs to
|
uint32_t id; //!< The Mission ID that the task belongs to
|
||||||
UNUSED(uint32_t locStatus); //!< ???
|
UNUSED(uint32_t locStatus); //!< ???
|
||||||
@ -25,7 +27,7 @@ public:
|
|||||||
// Queries the table with a custom "where" clause
|
// Queries the table with a custom "where" clause
|
||||||
std::vector<CDMissionTasks> Query(std::function<bool(CDMissionTasks)> predicate);
|
std::vector<CDMissionTasks> Query(std::function<bool(CDMissionTasks)> predicate);
|
||||||
|
|
||||||
std::vector<CDMissionTasks*> GetByMissionID(uint32_t missionID);
|
std::vector<CDMissionTasks*> GetByMissionID(const uint32_t missionID);
|
||||||
|
|
||||||
// TODO: Remove this and replace it with a proper lookup function.
|
// TODO: Remove this and replace it with a proper lookup function.
|
||||||
const CDTable::StorageType& GetEntries() const;
|
const CDTable::StorageType& GetEntries() const;
|
||||||
|
@ -22,7 +22,7 @@ void CDMissionsTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM Missions");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM Missions");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDMissions entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.id = tableData.getIntField("id", -1);
|
entry.id = tableData.getIntField("id", -1);
|
||||||
entry.defined_type = tableData.getStringField("defined_type", "");
|
entry.defined_type = tableData.getStringField("defined_type", "");
|
||||||
entry.defined_subtype = tableData.getStringField("defined_subtype", "");
|
entry.defined_subtype = tableData.getStringField("defined_subtype", "");
|
||||||
@ -76,7 +76,6 @@ void CDMissionsTable::LoadValuesFromDatabase() {
|
|||||||
UNUSED(entry.locStatus = tableData.getIntField("locStatus", -1));
|
UNUSED(entry.locStatus = tableData.getIntField("locStatus", -1));
|
||||||
entry.reward_bankinventory = tableData.getIntField("reward_bankinventory", -1);
|
entry.reward_bankinventory = tableData.getIntField("reward_bankinventory", -1);
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
tableData.finalize();
|
tableData.finalize();
|
||||||
|
@ -75,4 +75,3 @@ public:
|
|||||||
|
|
||||||
static CDMissions Default;
|
static CDMissions Default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ void CDMovementAIComponentTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MovementAIComponent");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM MovementAIComponent");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDMovementAIComponent entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.id = tableData.getIntField("id", -1);
|
entry.id = tableData.getIntField("id", -1);
|
||||||
entry.MovementType = tableData.getStringField("MovementType", "");
|
entry.MovementType = tableData.getStringField("MovementType", "");
|
||||||
entry.WanderChance = tableData.getFloatField("WanderChance", -1.0f);
|
entry.WanderChance = tableData.getFloatField("WanderChance", -1.0f);
|
||||||
@ -30,11 +30,8 @@ void CDMovementAIComponentTable::LoadValuesFromDatabase() {
|
|||||||
entry.WanderRadius = tableData.getFloatField("WanderRadius", -1.0f);
|
entry.WanderRadius = tableData.getFloatField("WanderRadius", -1.0f);
|
||||||
entry.attachedPath = tableData.getStringField("attachedPath", "");
|
entry.attachedPath = tableData.getStringField("attachedPath", "");
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<CDMovementAIComponent> CDMovementAIComponentTable::Query(std::function<bool(CDMovementAIComponent)> predicate) {
|
std::vector<CDMovementAIComponent> CDMovementAIComponentTable::Query(std::function<bool(CDMovementAIComponent)> predicate) {
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDMovementAIComponent {
|
struct CDMovementAIComponent {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string MovementType;
|
std::string MovementType;
|
||||||
|
@ -20,17 +20,14 @@ void CDObjectSkillsTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM ObjectSkills");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM ObjectSkills");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDObjectSkills entry;
|
auto &entry = entries.emplace_back();
|
||||||
entry.objectTemplate = tableData.getIntField("objectTemplate", -1);
|
entry.objectTemplate = tableData.getIntField("objectTemplate", -1);
|
||||||
entry.skillID = tableData.getIntField("skillID", -1);
|
entry.skillID = tableData.getIntField("skillID", -1);
|
||||||
entry.castOnType = tableData.getIntField("castOnType", -1);
|
entry.castOnType = tableData.getIntField("castOnType", -1);
|
||||||
entry.AICombatWeight = tableData.getIntField("AICombatWeight", -1);
|
entry.AICombatWeight = tableData.getIntField("AICombatWeight", -1);
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<CDObjectSkills> CDObjectSkillsTable::Query(std::function<bool(CDObjectSkills)> predicate) {
|
std::vector<CDObjectSkills> CDObjectSkillsTable::Query(std::function<bool(CDObjectSkills)> predicate) {
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDObjectSkills {
|
struct CDObjectSkills {
|
||||||
uint32_t objectTemplate; //!< The LOT of the item
|
uint32_t objectTemplate; //!< The LOT of the item
|
||||||
uint32_t skillID; //!< The Skill ID of the object
|
uint32_t skillID; //!< The Skill ID of the object
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "CDObjectsTable.h"
|
#include "CDObjectsTable.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
CDObjects m_default;
|
CDObjects ObjDefault;
|
||||||
};
|
};
|
||||||
|
|
||||||
void CDObjectsTable::LoadValuesFromDatabase() {
|
void CDObjectsTable::LoadValuesFromDatabase() {
|
||||||
@ -20,8 +20,10 @@ void CDObjectsTable::LoadValuesFromDatabase() {
|
|||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM Objects");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM Objects");
|
||||||
auto& entries = GetEntriesMutable();
|
auto& entries = GetEntriesMutable();
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDObjects entry;
|
const uint32_t lot = tableData.getIntField("id", 0);
|
||||||
entry.id = tableData.getIntField("id", -1);
|
|
||||||
|
auto& entry = entries[lot];
|
||||||
|
entry.id = lot;
|
||||||
entry.name = tableData.getStringField("name", "");
|
entry.name = tableData.getStringField("name", "");
|
||||||
UNUSED_COLUMN(entry.placeable = tableData.getIntField("placeable", -1);)
|
UNUSED_COLUMN(entry.placeable = tableData.getIntField("placeable", -1);)
|
||||||
entry.type = tableData.getStringField("type", "");
|
entry.type = tableData.getStringField("type", "");
|
||||||
@ -36,35 +38,34 @@ void CDObjectsTable::LoadValuesFromDatabase() {
|
|||||||
UNUSED_COLUMN(entry.gate_version = tableData.getStringField("gate_version", "");)
|
UNUSED_COLUMN(entry.gate_version = tableData.getStringField("gate_version", "");)
|
||||||
UNUSED_COLUMN(entry.HQ_valid = tableData.getIntField("HQ_valid", -1);)
|
UNUSED_COLUMN(entry.HQ_valid = tableData.getIntField("HQ_valid", -1);)
|
||||||
|
|
||||||
entries.insert(std::make_pair(entry.id, entry));
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
ObjDefault.id = 0;
|
||||||
|
|
||||||
m_default.id = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const CDObjects& CDObjectsTable::GetByID(uint32_t LOT) {
|
const CDObjects& CDObjectsTable::GetByID(const uint32_t lot) {
|
||||||
auto& entries = GetEntriesMutable();
|
auto& entries = GetEntriesMutable();
|
||||||
const auto& it = entries.find(LOT);
|
const auto& it = entries.find(lot);
|
||||||
if (it != entries.end()) {
|
if (it != entries.end()) {
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto query = CDClientDatabase::CreatePreppedStmt("SELECT * FROM Objects WHERE id = ?;");
|
auto query = CDClientDatabase::CreatePreppedStmt("SELECT * FROM Objects WHERE id = ?;");
|
||||||
query.bind(1, static_cast<int32_t>(LOT));
|
query.bind(1, static_cast<int32_t>(lot));
|
||||||
|
|
||||||
auto tableData = query.execQuery();
|
auto tableData = query.execQuery();
|
||||||
if (tableData.eof()) {
|
if (tableData.eof()) {
|
||||||
entries.insert(std::make_pair(LOT, m_default));
|
entries.emplace(lot, ObjDefault);
|
||||||
return m_default;
|
return ObjDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now get the data
|
// Now get the data
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDObjects entry;
|
const uint32_t lot = tableData.getIntField("id", 0);
|
||||||
entry.id = tableData.getIntField("id", -1);
|
|
||||||
|
auto& entry = entries[lot];
|
||||||
|
entry.id = lot;
|
||||||
entry.name = tableData.getStringField("name", "");
|
entry.name = tableData.getStringField("name", "");
|
||||||
UNUSED(entry.placeable = tableData.getIntField("placeable", -1));
|
UNUSED(entry.placeable = tableData.getIntField("placeable", -1));
|
||||||
entry.type = tableData.getStringField("type", "");
|
entry.type = tableData.getStringField("type", "");
|
||||||
@ -79,17 +80,15 @@ const CDObjects& CDObjectsTable::GetByID(uint32_t LOT) {
|
|||||||
UNUSED(entry.gate_version = tableData.getStringField("gate_version", ""));
|
UNUSED(entry.gate_version = tableData.getStringField("gate_version", ""));
|
||||||
UNUSED(entry.HQ_valid = tableData.getIntField("HQ_valid", -1));
|
UNUSED(entry.HQ_valid = tableData.getIntField("HQ_valid", -1));
|
||||||
|
|
||||||
entries.insert(std::make_pair(entry.id, entry));
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
tableData.finalize();
|
||||||
|
|
||||||
const auto& it2 = entries.find(LOT);
|
const auto& it2 = entries.find(lot);
|
||||||
if (it2 != entries.end()) {
|
if (it2 != entries.end()) {
|
||||||
return it2->second;
|
return it2->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_default;
|
return ObjDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDObjects {
|
struct CDObjects {
|
||||||
uint32_t id; //!< The LOT of the object
|
uint32_t id; //!< The LOT of the object
|
||||||
std::string name; //!< The internal name of the object
|
std::string name; //!< The internal name of the object
|
||||||
@ -24,6 +26,6 @@ class CDObjectsTable : public CDTable<CDObjectsTable, std::map<uint32_t, CDObjec
|
|||||||
public:
|
public:
|
||||||
void LoadValuesFromDatabase();
|
void LoadValuesFromDatabase();
|
||||||
// Gets an entry by ID
|
// Gets an entry by ID
|
||||||
const CDObjects& GetByID(uint32_t LOT);
|
const CDObjects& GetByID(const uint32_t lot);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,12 +19,11 @@ void CDPackageComponentTable::LoadValuesFromDatabase() {
|
|||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM PackageComponent");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM PackageComponent");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDPackageComponent entry;
|
auto& entry = entries.emplace_back();
|
||||||
entry.id = tableData.getIntField("id", -1);
|
entry.id = tableData.getIntField("id", -1);
|
||||||
entry.LootMatrixIndex = tableData.getIntField("LootMatrixIndex", -1);
|
entry.LootMatrixIndex = tableData.getIntField("LootMatrixIndex", -1);
|
||||||
entry.packageType = tableData.getIntField("packageType", -1);
|
entry.packageType = tableData.getIntField("packageType", -1);
|
||||||
|
|
||||||
entries.push_back(entry);
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
// Custom Classes
|
// Custom Classes
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
struct CDPackageComponent {
|
struct CDPackageComponent {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
uint32_t LootMatrixIndex;
|
uint32_t LootMatrixIndex;
|
||||||
|
@ -4,32 +4,31 @@ void CDPhysicsComponentTable::LoadValuesFromDatabase() {
|
|||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM PhysicsComponent");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM PhysicsComponent");
|
||||||
auto& entries = GetEntriesMutable();
|
auto& entries = GetEntriesMutable();
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDPhysicsComponent entry;
|
const uint32_t componentID = tableData.getIntField("id", -1);
|
||||||
entry.id = tableData.getIntField("id", -1);
|
|
||||||
|
auto& entry = entries[componentID];
|
||||||
|
entry.id = componentID;
|
||||||
entry.bStatic = tableData.getIntField("static", -1) != 0;
|
entry.bStatic = tableData.getIntField("static", -1) != 0;
|
||||||
entry.physicsAsset = tableData.getStringField("physics_asset", "");
|
entry.physicsAsset = tableData.getStringField("physics_asset", "");
|
||||||
UNUSED(entry->jump = tableData.getIntField("jump", -1) != 0);
|
UNUSED_COLUMN(entry.jump = tableData.getIntField("jump", -1) != 0;)
|
||||||
UNUSED(entry->doublejump = tableData.getIntField("doublejump", -1) != 0);
|
UNUSED_COLUMN(entry.doubleJump = tableData.getIntField("doublejump", -1) != 0;)
|
||||||
entry.speed = tableData.getFloatField("speed", -1);
|
entry.speed = static_cast<float>(tableData.getFloatField("speed", -1));
|
||||||
UNUSED(entry->rotSpeed = tableData.getFloatField("rotSpeed", -1));
|
UNUSED_COLUMN(entry.rotSpeed = tableData.getFloatField("rotSpeed", -1);)
|
||||||
entry.playerHeight = tableData.getFloatField("playerHeight");
|
entry.playerHeight = static_cast<float>(tableData.getFloatField("playerHeight"));
|
||||||
entry.playerRadius = tableData.getFloatField("playerRadius");
|
entry.playerRadius = static_cast<float>(tableData.getFloatField("playerRadius"));
|
||||||
entry.pcShapeType = tableData.getIntField("pcShapeType");
|
entry.pcShapeType = tableData.getIntField("pcShapeType");
|
||||||
entry.collisionGroup = tableData.getIntField("collisionGroup");
|
entry.collisionGroup = tableData.getIntField("collisionGroup");
|
||||||
UNUSED(entry->airSpeed = tableData.getFloatField("airSpeed"));
|
UNUSED_COLUMN(entry.airSpeed = tableData.getFloatField("airSpeed");)
|
||||||
UNUSED(entry->boundaryAsset = tableData.getStringField("boundaryAsset"));
|
UNUSED_COLUMN(entry.boundaryAsset = tableData.getStringField("boundaryAsset");)
|
||||||
UNUSED(entry->jumpAirSpeed = tableData.getFloatField("jumpAirSpeed"));
|
UNUSED_COLUMN(entry.jumpAirSpeed = tableData.getFloatField("jumpAirSpeed");)
|
||||||
UNUSED(entry->friction = tableData.getFloatField("friction"));
|
UNUSED_COLUMN(entry.friction = tableData.getFloatField("friction");)
|
||||||
UNUSED(entry->gravityVolumeAsset = tableData.getStringField("gravityVolumeAsset"));
|
UNUSED_COLUMN(entry.gravityVolumeAsset = tableData.getStringField("gravityVolumeAsset");)
|
||||||
|
|
||||||
entries.insert(std::make_pair(entry.id, entry));
|
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
tableData.finalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CDPhysicsComponent* CDPhysicsComponentTable::GetByID(uint32_t componentID) {
|
CDPhysicsComponent* CDPhysicsComponentTable::GetByID(const uint32_t componentID) {
|
||||||
auto& entries = GetEntriesMutable();
|
auto& entries = GetEntriesMutable();
|
||||||
auto itr = entries.find(componentID);
|
auto itr = entries.find(componentID);
|
||||||
return itr != entries.end() ? &itr->second : nullptr;
|
return itr != entries.end() ? &itr->second : nullptr;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "CDTable.h"
|
#include "CDTable.h"
|
||||||
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
struct CDPhysicsComponent {
|
struct CDPhysicsComponent {
|
||||||
@ -7,7 +8,7 @@ struct CDPhysicsComponent {
|
|||||||
bool bStatic;
|
bool bStatic;
|
||||||
std::string physicsAsset;
|
std::string physicsAsset;
|
||||||
UNUSED(bool jump);
|
UNUSED(bool jump);
|
||||||
UNUSED(bool doublejump);
|
UNUSED(bool doubleJump);
|
||||||
float speed;
|
float speed;
|
||||||
UNUSED(float rotSpeed);
|
UNUSED(float rotSpeed);
|
||||||
float playerHeight;
|
float playerHeight;
|
||||||
@ -26,5 +27,5 @@ public:
|
|||||||
void LoadValuesFromDatabase();
|
void LoadValuesFromDatabase();
|
||||||
|
|
||||||
static const std::string GetTableName() { return "PhysicsComponent"; };
|
static const std::string GetTableName() { return "PhysicsComponent"; };
|
||||||
CDPhysicsComponent* GetByID(uint32_t componentID);
|
CDPhysicsComponent* GetByID(const uint32_t componentID);
|
||||||
};
|
};
|
||||||
|
@ -353,7 +353,6 @@ private:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Pet information loaded from the CDClientDatabase
|
* Pet information loaded from the CDClientDatabase
|
||||||
* TODO: Switch to a reference when safe to do so
|
|
||||||
*/
|
*/
|
||||||
CDPetComponent m_PetInfo;
|
CDPetComponent m_PetInfo;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user