void Barracks::deliverTrainee() { if( walkers().size() == 0 && _d->store.freeQty() > 0 ) { CartSupplierPtr walker = CartSupplier::create( _city() ); walker->send2city( this, good::weapon, 100 ); if( !walker->isDeleted() ) { addWalker( walker.object() ); } } if( _d->store.qty( good::weapon ) >= 100 ) { TraineeWalkerPtr trainee = TraineeWalker::create( _city(), walker::soldier ); trainee->send2City( this, false ); if( !trainee->isDeleted() ) { good::Stock delStock( good::weapon, 100 ); _d->store.retrieve( delStock, 100 ); addWalker( trainee.object() ); _d->notNeedSoldiers = false; } else { _d->notNeedSoldiers = true; } } }
void Factory::receiveGood() { GoodStock& stock = getInGood(); //send cart supplier if stock not full if( _mayDeliverGood() && stock._currentQty < stock._maxQty ) { CartSupplierPtr walker = CartSupplier::create( Scenario::instance().getCity() ); walker->send2City( this, stock._goodType, stock._maxQty - stock._currentQty ); if( !walker->isDeleted() ) { addWalker( walker.as<Walker>() ); } } }