void CartPusher::load( const VariantMap& stream )
{
  Walker::load( stream );
  VariantMap vm_stock = stream.get( "stock" ).toMap();
  _d->stock.load( vm_stock );

  TilePos prPos( stream.get( "producerPos" ).toTilePos() );
  Tile& prTile = Scenario::instance().getCity().getTilemap().at( prPos );
  _d->producerBuilding = prTile.get_terrain().getOverlay().as<Building>();

  TilePos cnsmPos( stream.get( "consumerPos" ).toTilePos() );
  Tile& cnsmTile = Scenario::instance().getCity().getTilemap().at( cnsmPos );
  _d->producerBuilding = prTile.get_terrain().getOverlay().as<Building>();

  _d->maxDistance = stream.get( "maxDistance" ).toInt();
  _d->reservationID = stream.get( "reservationID" ).toInt();
}
void CartPusher::load( const VariantMap& stream )
{
  Walker::load( stream );

  _d->stock.load( stream.get( "stock" ).toList() );

  TilePos prPos( stream.get( "producerPos" ).toTilePos() );
  Tile& prTile = _getCity()->getTilemap().at( prPos );
  _d->producerBuilding = prTile.getOverlay().as<Building>();
  
  if( _d->producerBuilding.is<WorkingBuilding>() )
  {
    _d->producerBuilding.as<WorkingBuilding>()->addWalker( this );
  }

  TilePos cnsmPos( stream.get( "consumerPos" ).toTilePos() );
  Tile& cnsmTile = _getCity()->getTilemap().at( cnsmPos );
  _d->consumerBuilding = cnsmTile.getOverlay().as<Building>();

  _d->maxDistance = stream.get( "maxDistance" ).toInt();
  _d->reservationID = stream.get( "reservationID" ).toInt();
}