public List <Tile> DrawTiles(TileBag tileBag) { var tilesAvailable = tileBag.count; if (tilesAvailable == 0) { throw new Exception("No tiles available to draw."); } var tilesNeeded = Rack.capacity - this.rack.TileCount; var drawCount = tilesAvailable > tilesNeeded ? tilesNeeded : tilesAvailable; var tilesToAdd = tileBag.DrawTiles(drawCount); this.rack.AddTiles(tilesToAdd); return(tilesToAdd); }