private void generateRegions(){
		for (int i = 0; i < size * .75; i ++){
			// the ternary operator guarantees one of each region type and then the rest are random
			int type =  (i < 6) ? i : (int) (Math.random() * 6);
			regions.add(new Region(type));
		}


		ArrayList<Tile> regionSeeds = new ArrayList<>();
		while (regionSeeds.size() < regions.size()){
			int x = (int) ( Math.random() * (size - 2)) + 1;
			int y = (int) ( Math.random() * (size - 2)) + 1;
			Tile t = new Tile(x, y, TILE_ID); // The last parameter ensures a unique ID for each tile.
			TILE_ID ++;

			boolean valid = true;
			for (Tile seed: regionSeeds){ // Ensure the seeds start out a reasonable distance apart
				if (seed.distance(t) < 3.0f){
					valid = false;
					break;
				}
			}
			if (valid){ // If the new tile is spread away from the others, add it
				tiles[x][y] = t;
				regionSeeds.add(t);
			}
		}

		for (int i = 0; i < regions.size(); i ++) // Add the seeds to the regions
			regions.get(i).addTile(regionSeeds.get(i));

		growRegionSeeds();

	}