public void addCity() {
		int max=getPreference(WORLD.map[0][0]);
		ArrayList<Point> best=new ArrayList<Point>();
		best.add(WORLD.map[0][0]);
		for (int y=0;y<WORLD.HEIGHT;y++)
			for (int x=0;x<WORLD.WIDTH;x++)
				if (WORLD.map[x][y].owner==null)
					if (getPreference(WORLD.map[x][y])>max) {
						best.clear();
						best.add(WORLD.map[x][y]);
						max=getPreference(WORLD.map[x][y]);
					} else if (getPreference(WORLD.map[x][y])==max)
						best.add(WORLD.map[x][y]);
		if (max>0) {
			City c=new City(this,best.get(rand(best.size()+cities.size())%best.size()),rand(cities.size()+future.size())%populationDensity+1,cities.size()-1,max/4);
			future.add(c);
		} else {
			for (City c:cities) {
				c.maxPopulation<<=1;
				c.maxSize<<=1;
			}
		}
	}