mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-15 04:38:21 +00:00
unordered
This commit is contained in:
parent
4a189edf43
commit
6f2d583ca2
@ -1,19 +1,8 @@
|
|||||||
#include "CDRebuildComponentTable.h"
|
#include "CDRebuildComponentTable.h"
|
||||||
|
|
||||||
void CDRebuildComponentTable::LoadValuesFromDatabase() {
|
void CDRebuildComponentTable::LoadValuesFromDatabase() {
|
||||||
// First, get the size of the table
|
|
||||||
unsigned int size = 0;
|
|
||||||
auto tableSize = CDClientDatabase::ExecuteQuery("SELECT COUNT(*) FROM RebuildComponent");
|
|
||||||
while (!tableSize.eof()) {
|
|
||||||
size = tableSize.getIntField(0, 0);
|
|
||||||
|
|
||||||
tableSize.nextRow();
|
|
||||||
}
|
|
||||||
|
|
||||||
this->entries.reserve(size);
|
|
||||||
|
|
||||||
// Now get the data
|
// Now get the data
|
||||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent order by id");
|
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent");
|
||||||
while (!tableData.eof()) {
|
while (!tableData.eof()) {
|
||||||
CDRebuildComponent entry;
|
CDRebuildComponent entry;
|
||||||
uint32_t id = tableData.getIntField("id", -1);
|
uint32_t id = tableData.getIntField("id", -1);
|
||||||
@ -27,14 +16,12 @@ void CDRebuildComponentTable::LoadValuesFromDatabase() {
|
|||||||
entry.post_imagination_cost = tableData.getIntField("post_imagination_cost", -1);
|
entry.post_imagination_cost = tableData.getIntField("post_imagination_cost", -1);
|
||||||
entry.time_before_smash = tableData.getFloatField("time_before_smash", -1.0f);
|
entry.time_before_smash = tableData.getFloatField("time_before_smash", -1.0f);
|
||||||
|
|
||||||
this->entries.push_back(std::make_pair(id, entry));
|
this->entries.insert_or_assign(id, entry);
|
||||||
tableData.nextRow();
|
tableData.nextRow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::optional<CDRebuildComponent> CDRebuildComponentTable::Get(uint32_t componentId) {
|
const std::optional<CDRebuildComponent> CDRebuildComponentTable::Get(uint32_t componentId) {
|
||||||
auto result = std::lower_bound(this->entries.begin(), this->entries.end(), componentId, [](const auto& entry, const auto& componentId) {
|
auto it = this->entries.find(componentId);
|
||||||
return entry.first < componentId;
|
return it != this->entries.end() ? std::make_optional(it->second) : std::nullopt;
|
||||||
});
|
|
||||||
return result == this->entries.end() ? std::nullopt : std::make_optional(result->second);
|
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ struct CDRebuildComponent {
|
|||||||
|
|
||||||
class CDRebuildComponentTable : public CDTable<CDRebuildComponentTable> {
|
class CDRebuildComponentTable : public CDTable<CDRebuildComponentTable> {
|
||||||
private:
|
private:
|
||||||
std::vector<std::pair<uint32_t, CDRebuildComponent>> entries;
|
std::unordered_map<uint32_t, CDRebuildComponent> entries;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void LoadValuesFromDatabase();
|
void LoadValuesFromDatabase();
|
||||||
|
Loading…
Reference in New Issue
Block a user