void HighBridge::build( const TilePos& pos )
{
  TilePos endPos, startPos;
  _d->direction=D_NONE;

  _d->subtiles.clear();
  _fgPictures.clear();

  CityPtr city = Scenario::instance().getCity();
  Tilemap& tilemap = city->getTilemap();

  _checkParams( _d->direction, startPos, endPos, pos );

  if( _d->direction != D_NONE )
  {    
    _computePictures( startPos, endPos, _d->direction );
   
    for( HighBridgeSubTiles::iterator it=_d->subtiles.begin(); it != _d->subtiles.end(); it++ )
    {
      HighBridgeSubTilePtr subtile = (*it);
      TilePos buildPos = pos + subtile->_pos;
      Tile& tile = tilemap.at( buildPos );
      subtile->setPicture( tile.getPicture() );
      subtile->_imgId = tile.getTerrain().getOriginalImgId();
      subtile->_info = tile.getTerrain().encode();
      subtile->_parent = this;
      
      city->build( subtile.as<Construction>(), buildPos );
    }    
  }
}