mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-24 14:33:34 +00:00
unordered
This commit is contained in:
parent
4a189edf43
commit
6f2d583ca2
@ -1,19 +1,8 @@
|
||||
#include "CDRebuildComponentTable.h"
|
||||
|
||||
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
|
||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent order by id");
|
||||
auto tableData = CDClientDatabase::ExecuteQuery("SELECT * FROM RebuildComponent");
|
||||
while (!tableData.eof()) {
|
||||
CDRebuildComponent entry;
|
||||
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.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();
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
return entry.first < componentId;
|
||||
});
|
||||
return result == this->entries.end() ? std::nullopt : std::make_optional(result->second);
|
||||
auto it = this->entries.find(componentId);
|
||||
return it != this->entries.end() ? std::make_optional(it->second) : std::nullopt;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ struct CDRebuildComponent {
|
||||
|
||||
class CDRebuildComponentTable : public CDTable<CDRebuildComponentTable> {
|
||||
private:
|
||||
std::vector<std::pair<uint32_t, CDRebuildComponent>> entries;
|
||||
std::unordered_map<uint32_t, CDRebuildComponent> entries;
|
||||
|
||||
public:
|
||||
void LoadValuesFromDatabase();
|
||||
|
Loading…
Reference in New Issue
Block a user