module Town (createTown) where import BuildingData import DB import TerrainData import Plane -- | Create a town from a list of buildings. createTown :: PlaneRef -> [BuildingType] -> DB [BuildingRef] createTown plane_ref = mapM $ \building_type -> do let clear_need = minimum $ map abs $ uncurry (++) $ unzip $ buildingOccupies building_type p <- pickRandomClearSite 25 (clear_need*2+1) (clear_need+1) (Position (0,0)) (not . (`elem` difficult_terrains)) plane_ref dbAddBuilding Building $ Constructed { constructed_plane = plane_ref, constructed_position = p, constructed_type = building_type }