diff options
Diffstat (limited to 'src/game/base/planet.cc')
| -rw-r--r-- | src/game/base/planet.cc | 34 | 
1 files changed, 33 insertions, 1 deletions
| diff --git a/src/game/base/planet.cc b/src/game/base/planet.cc index 2adb1fb..06a8219 100644 --- a/src/game/base/planet.cc +++ b/src/game/base/planet.cc @@ -6,7 +6,7 @@  #include "base/game.h"  #include "base/planet.h" - +#include "base/weapon.h"  namespace game  { @@ -27,4 +27,36 @@ 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 | 
