/* base/station.cc This file is part of the Osirion project and is distributed under the terms and conditions of the GNU General Public License version 2 */ #include "base/game.h" #include "base/station.h" #include "base/weapon.h" #include "sys/sys.h" namespace game { Station::Station() : Platform() { entity_moduletypeid = station_enttype; set_flag(core::Entity::Dockable); set_flag(core::Entity::ShowOnMap); } Station::~Station() { } void Station::upkeep(const unsigned long timestamp) { if (inventory()) { const unsigned long deplete = (Game::g_deplete ? 1000 * (unsigned long) Game::g_deplete->value() : 0); if (deplete > 0) { bool dirty = false; for (core::Inventory::Items::iterator it = inventory()->items().begin(); it != inventory()->items().end(); ) { core::Item *item = (*it); if ((item->amount() > 0) && (item->timestamp() + deplete < timestamp)) { item->dec_amount(1); dirty = true; } if ((item->info()->type() == Weapon::infotype()) && (item->amount() == 0)) { delete (item); (*it) = 0; inventory()->items().erase(it++); dirty = true; } else { ++it; } } if (dirty) { inventory()->set_dirty(); } } } } }