--[[ The easiest way to create a preset to add to this file is to use factorio itself. Create a new world
    (vanilla, not scenario) and configure the settings you want. When you launch the game, you can run the following:
    /c
    local str = serpent.block(game.surfaces.nauvis.map_gen_settings)
    helpers.write_file('map_gen_settings.lua', str)

    This will output a file with a table that you can add to this resources file or into your specific map.
    In either case, make sure to set seed to nil unless you want your map to be *exactly* the same each time.
    The expectation is that all changes that deviate from default generation are noted.
    Water size and frequency is not denoted as such. Instead water size = water and water frequency = terrain_segmentation
]]
return {
    -- the default table is included as a reference but also to give the option of overwriting all user settings
    default = {
        autoplace_controls = {
            coal = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            ['copper-ore'] = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            ['crude-oil'] = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            ['enemy-base'] = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            ['iron-ore'] = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            stone = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            trees = {
                frequency = 1,
                richness = 1,
                size = 1
            },
            ['uranium-ore'] = {
                frequency = 1,
                richness = 1,
                size = 1
            }
        },
        autoplace_settings = {},
        cliff_settings = {
            cliff_elevation_0 = 10,
            cliff_elevation_interval = 40,
            name = 'cliff',
            richness = 1
        },
        height = 2000000,
        peaceful_mode = false,
        property_expression_names = {},
        seed = nil,
        starting_area = 1,
        starting_points = {
            {
                x = 0,
                y = 0
            }
        },
        terrain_segmentation = 1,
        water = 1,
        width = 2000000
    },
    -- no enemies
    enemy_none = {
        autoplace_controls = {
            ['enemy-base'] = {
                frequency = 1,
                richness = 1,
                size = 0
            }
        }
    },
    -- high frequency and big size enemies
    enemy_high = {
        autoplace_controls = {
            ['enemy-base'] = {
                frequency = 1.41,
                richness = 1,
                size = 1.41
            }
        }
    },
    -- very high frequency and very big size enemies
    enemy_very_high = {
        autoplace_controls = {
            ['enemy-base'] = {
                frequency = 2,
                richness = 1,
                size = 2
            }
        }
    },
    -- no ores
    ore_none = {
        autoplace_controls = {
            coal = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['copper-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['iron-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            stone = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['uranium-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            }
        }
    },
    -- no oil
    oil_none = {
        autoplace_controls = {
            ['crude-oil'] = {
                frequency = 1,
                richness = 1,
                size = 0
            }
        }
    },
    -- no ores, no oil
    ore_oil_none = {
        autoplace_controls = {
            coal = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['copper-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['crude-oil'] = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['iron-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            stone = {
                frequency = 1,
                richness = 1,
                size = 0
            },
            ['uranium-ore'] = {
                frequency = 1,
                richness = 1,
                size = 0
            }
        }
    },
    -- no water
    water_none = {
        autoplace_settings = {
            tile = {
                settings = {
                    ['deepwater'] = {frequency = 1, size = 0, richness = 1},
                    ['deepwater-green'] = {frequency = 1, size = 0, richness = 1},
                    ['water'] = {frequency = 1, size = 0, richness = 1},
                    ['water-green'] = {frequency = 1, size = 0, richness = 1},
                    ['water-mud'] = {frequency = 1, size = 0, richness = 1},
                    ['water-shallow'] = {frequency = 1, size = 0, richness = 1}
                }
            }
        }
    },
    -- very low water
    water_very_low = {
        terrain_segmentation = 0.5,
        water = 0.5
    },
    -- no cliffs
    cliff_none = {
        cliff_settings = {
            cliff_elevation_0 = 1024,
            cliff_elevation_interval = 10,
            name = 'cliff'
        }
    },
    -- normal cliffs
    cliff_normal = {
        name = 'cliff',
        cliff_elevation_0 = 10,
        cliff_elevation_interval = 10
    },
    -- cliffs to high frequency, big size
    cliff_high = {
        cliff_settings = {
            cliff_elevation_0 = 5,
            cliff_elevation_interval = 5,
            name = 'cliff'
        }
    },
    -- cliffs to very high frequency, very big size
    cliff_very_high = {
        cliff_settings = {
            cliff_elevation_0 = 2.5000572204589844,
            cliff_elevation_interval = 2.5000572204589844,
            name = 'cliff'
        }
    },
    -- cliffs to very high frequency, very big size
    tree_none = {
        autoplace_controls = {
            trees = {
                frequency = 1,
                richness = 1,
                size = 0
            }
        }
    },
    -- cliffs to very high frequency, very big size
    tree_very_high = {
        autoplace_controls = {
            trees = {
                frequency = 2,
                richness = 2,
                size = 2
            }
        }
    },
    -- starting area to very low
    starting_area_very_low = {
        starting_area = 0
    },
    -- peaceful mode on
    peaceful_mode_on = {
        peaceful_mode = true
    },
    -- random seed, in case you need/want the seed to be unique from nauvis
    unique_seed = {
        seed = nil
    },
    -- grass1 only (no water, you will need to add enabled_water if you want water)
    grass1_only = {
        autoplace_settings = {
            tile = {
                treat_missing_as_default = false,
                settings = {
                    ['grass-1'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- grass only (no water, you will need to add enabled_water if you want water)
    grass_only = {
        autoplace_settings = {
            tile = {
                treat_missing_as_default = false,
                settings = {
                    ['grass-1'] = {frequency = 1, size = 1, richness = 1},
                    ['grass-2'] = {frequency = 1, size = 1, richness = 1},
                    ['grass-3'] = {frequency = 1, size = 1, richness = 1},
                    ['grass-4'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- desert only (no water, you will need to add enabled_water if you want water)
    desert_only = {
        autoplace_settings = {
            tile = {
                treat_missing_as_default = false,
                settings = {
                    ['red-desert-0'] = {frequency = 1, size = 1, richness = 1},
                    ['red-desert-1'] = {frequency = 1, size = 1, richness = 1},
                    ['red-desert-2'] = {frequency = 1, size = 1, richness = 1},
                    ['red-desert-3'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- dirt only (no water, you will need to add enabled_water if you want water)
    dirt_only = {
        autoplace_settings = {
            tile = {
                treat_missing_as_default = false,
                settings = {
                    ['dirt-1'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-2'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-3'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-4'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-5'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-6'] = {frequency = 1, size = 1, richness = 1},
                    ['dirt-7'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- sand only (no water, you will need to add enabled_water if you want water)
    sand_only = {
        autoplace_settings = {
            tile = {
                treat_missing_as_default = false,
                settings = {
                    ['sand-1'] = {frequency = 1, size = 1, richness = 1},
                    ['sand-2'] = {frequency = 1, size = 1, richness = 1},
                    ['sand-3'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- adds water to *_only maps
    enable_water = {
        autoplace_settings = {
            tile = {
                settings = {
                    ['deepwater'] = {frequency = 1, size = 1, richness = 1},
                    ['deepwater-green'] = {frequency = 1, size = 1, richness = 1},
                    ['water'] = {frequency = 1, size = 1, richness = 1},
                    ['water-green'] = {frequency = 1, size = 1, richness = 1},
                    ['water-mud'] = {frequency = 1, size = 1, richness = 1},
                    ['water-shallow'] = {frequency = 1, size = 1, richness = 1}
                }
            }
        }
    },
    -- will generate a world with only water (useful for maps that want full terrain control and no entities on the surface)
    waterworld = {
        property_expression_names = {
            elevation = '-1'
        }
    },
    -- creates a 1x1 world border, this will prevent chunks from being generated
    void = {
        height = 1,
        width = 1
    },
    -- The starting area plateau surrounded by an endless ocean
    starting_plateau = {
        property_expression_names = {
            elevation = '0_17-starting-plateau'
        }
    }
}
