DepotChest* Player::getDepotChest(uint32_t depotId, bool autoCreate)
{
auto it = depotChests.find(depotId);
if (it != depotChests.end()) {
return it->second;
}
if (!autoCreate) {
return nullptr;
}
DepotChest* depotChest;
if (depotId > 0 && depotId < 18) {
depotChest = new DepotChest(25452 + depotId);
} else {
depotChest = new DepotChest(ITEM_DEPOT);
}
depotChest->incrementReferenceCounter();
depotChest->setMaxDepotItems(getMaxDepotItems());
depotChests[depotId] = depotChest;
return depotChest;
}
DepotLocker* Player::getDepotLocker(uint32_t depotId)
{
auto it = depotLockerMap.find(depotId);
if (it != depotLockerMap.end()) {
inbox->setParent(it->second);
for (uint8_t i = g_config.getNumber(ConfigManager::DEPOT_BOXES); i > 0; i--) {
if (DepotChest* depotBox = getDepotChest(i, false)) {
depotBox->setParent(it->second->getItemByIndex(0)->getContainer());
}
}
return it->second;
}
DepotLocker* depotLocker = new DepotLocker(ITEM_LOCKER1);
depotLocker->setDepotId(depotId);
depotLocker->internalAddThing(Item::CreateItem(ITEM_MARKET));
depotLocker->internalAddThing(inbox);
Container* depotChest = Item::CreateItemAsContainer(ITEM_DEPOT, g_config.getNumber(ConfigManager::DEPOT_BOXES));
lastDepotChest = depotChest;
for (uint8_t i = g_config.getNumber(ConfigManager::DEPOT_BOXES); i > 0; i--) {
DepotChest* depotBox = getDepotChest(i, true);
depotChest->internalAddThing(depotBox);
depotBox->setParent(depotChest);
}
depotLocker->internalAddThing(depotChest);
depotLockerMap[depotId] = depotLocker;
return depotLocker;
}