/* base/planet.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #include "base/game.h" #include "base/planet.h" #include "base/weapon.h" namespace game { Planet::Planet() : core::EntityGlobe() { set_flag(core::Entity::ShowOnMap); get_color().assign(1.0f, 1.0f); // white set_radius(64.0f); // 64 game units set_rotationspeed(1.0f); // default rotationspeed: 1 degree per second entity_moduletypeid = planet_enttype; } Planet::~Planet() { } void Planet::upkeep(const unsigned long timestamp) { if (!inventory()) return; 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(); } } } } // namespace game