Shipwright/soh/soh/Enhancements/item-tables/ItemTableManager.cpp

43 lines
1.3 KiB
C++

#include "ItemTableManager.h"
#include <stdexcept>
ItemTableManager::ItemTableManager() {
}
ItemTableManager::~ItemTableManager() {
this->itemTables.clear();
}
bool ItemTableManager::AddItemTable(uint16_t tableID) {
ItemTable newItemTable;
return itemTables.emplace(tableID, newItemTable).second;
}
bool ItemTableManager::AddItemEntry(uint16_t tableID, uint16_t getItemID, GetItemEntry getItemEntry) {
try {
ItemTable* itemTable = RetrieveItemTable(tableID);
return itemTable->emplace(getItemID, getItemEntry).second;
} catch (const std::out_of_range& oor) { return false; }
}
GetItemEntry ItemTableManager::RetrieveItemEntry(uint16_t tableID, uint16_t itemID) {
try {
ItemTable* itemTable = RetrieveItemTable(tableID);
return itemTable->at(itemID);
} catch (std::out_of_range& oor) { return GET_ITEM_NONE; }
}
bool ItemTableManager::ClearItemTable(uint16_t tableID) {
try {
ItemTable* itemTable = RetrieveItemTable(tableID);
itemTable->clear();
return true;
} catch (const std::out_of_range& oor) { return false; }
}
ItemTable* ItemTableManager::RetrieveItemTable(uint16_t tableID) {
try {
return &itemTables.at(tableID);
} catch (const std::out_of_range& oor) { throw(oor); }
}