diff options
| author | Stijn Buys <ingar@osirion.org> | 2013-11-11 00:41:33 +0000 | 
|---|---|---|
| committer | Stijn Buys <ingar@osirion.org> | 2013-11-11 00:41:33 +0000 | 
| commit | 7bdab72e2ddf145a4692ae92b22110c2e7febe67 (patch) | |
| tree | 1d23b5cd5bdb6770b76e1a68ed651d30d6cab22c /src/game/base/station.cc | |
| parent | 8039544940b6145dcc8c63bcd4e06073ed61801e (diff) | |
Support for station weapons.
Diffstat (limited to 'src/game/base/station.cc')
| -rw-r--r-- | src/game/base/station.cc | 49 | 
1 files changed, 24 insertions, 25 deletions
| diff --git a/src/game/base/station.cc b/src/game/base/station.cc index 31e6b3e..6b451a9 100644 --- a/src/game/base/station.cc +++ b/src/game/base/station.cc @@ -12,7 +12,7 @@  namespace game  { -Station::Station() : Entity() +Station::Station() : Platform()  {  	entity_moduletypeid = station_enttype;  	set_flag(core::Entity::Dockable); @@ -26,32 +26,31 @@ Station::~Station()  void Station::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 (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 ((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(); +			if (dirty) { +				inventory()->set_dirty(); +			}  		}  	}  } | 
