From 66483f5a52aa47868b6431fef6e5158889a5c2cf Mon Sep 17 00:00:00 2001 From: grilledham Date: Mon, 15 Jan 2018 17:25:46 +0000 Subject: [PATCH] added map_gen_not_threaded --- .../map_gen_not_threaded.lua | 316 ++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 locale/gen_combined/grilledham_map_gen/map_gen_not_threaded.lua diff --git a/locale/gen_combined/grilledham_map_gen/map_gen_not_threaded.lua b/locale/gen_combined/grilledham_map_gen/map_gen_not_threaded.lua new file mode 100644 index 00000000..9b466cdd --- /dev/null +++ b/locale/gen_combined/grilledham_map_gen/map_gen_not_threaded.lua @@ -0,0 +1,316 @@ +require("locale.gen_combined.grilledham_map_gen.builders") +require("locale.utils.poisson_rng") + +local function do_row(row, data) + local y = data.top_y + row + local top_x = data.top_x + + for x = top_x, top_x + 31 do + + -- local coords need to be 'centered' to allow for correct rotation and scaling. + local tile, entity = MAP_GEN(x + 0.5, y + 0.5, x, y) + + if type(tile) == "boolean" and not tile then + table.insert(data.tiles, {name = "out-of-map", position = {x, y}}) + elseif type(tile) == "string" then + table.insert(data.tiles, {name = tile, position = {x, y}}) + + if tile == "water" or tile == "deepwater" or tile == "water-green" or tile == "deepwater-green" then + local a = x + 1 + table.insert(data.tiles, {name = tile, position = {a, y}}) + local a =row + 1 + table.insert(data.tiles, {name = tile, position = {x, a}}) + local a = x - 1 + table.insert(data.tiles, {name = tile, position = {a, y}}) + local a =row - 1 + table.insert(data.tiles, {name = tile, position = {x, a}}) + end + end + + if map_gen_decoratives then + tile_decoratives = check_decorative(tile, x, y) + for _,tbl in ipairs(tile_decoratives) do + table.insert(data.decoratives, tbl) + end + + tile_entities = check_entities(tile, x, y) + for _,entity in ipairs(tile_entities) do + table.insert(data.entities, entity) + end + end + + if entity then + table.insert(data.entities, entity) + end + end +end + +local function do_place_tiles(data) + data.surface.set_tiles(data.tiles, true) +end + +local function do_place_decoratives(data) + if not map_gen_decoratives then return end + + for _, e in pairs(surface.find_entities_filtered{area=area, type="decorative"}) do + e.destroy() + end + for _, e in pairs(surface.find_entities_filtered{area=area, type="simple-entity"}) do + e.destroy() + end + + local surface = data.surface + for _,d in pairs(data.decoratives) do + surface.create_decoratives{check_collision=false, decoratives={d}} + end +end + +local function do_place_entities(data) + local surface = data.surface + for _, e in ipairs(data.entities) do + if surface.can_place_entity(e) then + surface.create_entity(e) + end + end +end + +function run_combined_module(event) + + if MAP_GEN == nil then + game.print("MAP_GEN not set") + return + end + + local area = event.area + local surface = event.surface + MAP_GEN_SURFACE = surface + + local data = + { + top_x = area.left_top.x, + top_y = area.left_top.y , + surface = surface, + tiles = {}, + entities = {}, + decoratives = {} + } + + for row = 0, 31 do + do_row(row, data) + end + + do_place_tiles(data) + do_place_decoratives(data) + do_place_entities(data) + +end + +local decorative_options = { + ["concrete"] = {}, + ["deepwater"] = {}, + ["deepwater-green"] = { + {"brown-carpet-grass", 100}, + {"brown-cane-cluster", 500}, + }, + ["dirt-3"] = { + {"brown-carpet-grass", 100}, + {"brown-cane-cluster", 200}, + {"sand-rock-small", 150}, + }, + ["dirt-6"] = { + {"sand-rock-small", 150}, + {"red-asterisk", 45}, + {"red-desert-bush", 12}, + {"rock-medium", 375}, + + + }, + ["grass-1"] = { + {"green-carpet-grass-1", 3}, + {"green-hairy-grass-1", 7}, + {"green-bush-mini", 10}, + {"green-pita", 6}, + {"green-small-grass-1", 12}, + {"green-asterisk", 25}, + {"green-bush-mini", 7}, + {"garballo", 20}, + }, + ["grass-3"] = { + {"green-carpet-grass-1", 12}, + {"green-hairy-grass-1", 28}, + {"green-bush-mini", 40}, + {"green-pita", 24}, + {"green-small-grass-1", 48}, + {"green-asterisk", 100}, + {"green-bush-mini", 28}, + }, + ["grass-2"] = { + {"green-hairy-grass-1", 56}, + {"green-bush-mini", 80}, + {"green-pita", 48}, + {"green-small-grass-1", 96}, + {"green-asterisk", 200}, + {"green-bush-mini", 56}, + {"brown-cane-cluster", 100}, + {"brown-carpet-grass", 100}, + }, + ["hazard-concrete-left"] = {}, + ["hazard-concrete-right"] = {}, + ["lab-dark-1"] = {}, + ["lab-dark-2"] = {}, + ["red-desert"] = { + {"brown-carpet-grass", 35}, + {"orange-coral-mini", 45}, + {"red-asterisk", 45}, + {"red-desert-bush", 12}, + {"rock-medium", 375}, + {"sand-rock-small", 200}, + {"sand-rock-small", 30}, + }, + ["red-desert-dark"] = { + {"brown-carpet-grass", 70}, + {"orange-coral-mini", 90}, + {"red-asterisk", 90}, + {"red-desert-bush", 35}, + {"rock-medium", 375}, + {"sand-rock-small", 200}, + {"sand-rock-small", 150}, + }, + ["sand-1"] = { + {"brown-carpet-grass", 35}, + {"orange-coral-mini", 45}, + {"red-asterisk", 45}, + {"brown-asterisk", 45}, + }, + ["sand-3"] = { + {"brown-carpet-grass", 35}, + {"orange-coral-mini", 45}, + {"brown-asterisk", 45}, + }, + ["stone-path"] = {}, + ["water"] = {}, + ["water-green"] = {}, + ["out-of-map"] = {}, +} + +local function check_decorative(tile, x, y) + local options = decorative_options[tile] + local tile_decoratives = {} + + for _,e in ipairs(options) do + name = e[1] + high_roll = e[2] + if poisson_rng_next(high_roll / 2 ) == 1 then + table.insert(tile_decoratives, {name=name, amount=1, position={x,y}}) + end + end + + return tile_decoratives +end + +local entity_options = { + ["concrete"] = {}, + ["deepwater"] = {}, + ["deepwater-green"] = {}, + ["water"] = {}, + ["water-green"] = {}, + ["dirt-3"] = { + {"tree-01", 500}, + {"tree-06", 300}, + {"tree-07", 800}, + {"tree-09", 2000}, + {"rock-big", 400}, + }, + ["dirt-6"] = { + {"tree-06", 150}, + {"tree-07", 400}, + {"tree-09", 1000}, + {"rock-big", 300}, + }, + ["grass-1"] = { + {"tree-01", 150}, + {"tree-04", 400}, + {"tree-06", 400}, + {"tree-07", 400}, + {"tree-09", 1000}, + {"rock-big", 400}, + {"green-coral", 10000}, + }, + ["grass-3"] = { + {"tree-02", 400}, + {"tree-03", 400}, + {"tree-04", 800}, + {"tree-06", 300}, + {"tree-07", 800}, + {"tree-08", 400}, + {"tree-09", 2000}, + {"rock-big", 400}, + }, + ["grass-2"] = { + {"tree-04", 800}, + {"tree-06", 300}, + {"tree-07", 400}, + {"tree-09", 1000}, + {"dry-tree", 1000}, + {"rock-big", 200}, + }, + ["hazard-concrete-left"] = {}, + ["hazard-concrete-right"] = {}, + ["lab-dark-1"] = {}, + ["lab-dark-2"] = {}, + ["red-desert"] = { + {"dry-tree", 400}, + {"dry-hairy-tree", 400}, + {"tree-06", 500}, + {"tree-06", 500}, + {"tree-01", 500}, + {"tree-02", 500}, + {"tree-03", 500}, + {"sand-rock-big", 200}, + {"sand-rock-big", 400}, + {"red-desert-rock-huge-02", 400}, + }, + ["red-desert-dark"] = { + {"dry-tree", 400}, + {"dry-hairy-tree", 400}, + {"tree-06", 500}, + {"tree-06", 500}, + {"tree-01", 500}, + {"tree-02", 500}, + {"tree-03", 500}, + {"sand-rock-big", 200}, + {"sand-rock-big", 400}, + {"red-desert-rock-huge-02", 400}, + }, + ["sand-1"] = { + {"dry-tree", 1000}, + {"dry-hairy-tree", 1000}, + {"dead-tree", 1000}, + {"rock-big", 150}, + + }, + ["sand-3"] = { + {"dead-tree", 1000}, + {"dry-tree", 1000}, + {"dry-hairy-tree", 1000}, + {"rock-big", 150}, + + }, + ["stone-path"] = {}, + ["out-of-map"] = {}, +} + +function check_entities(tile, x, y) + local options = entity_options[tile] + local tile_entity_list = {} + + for _,e in ipairs(options) do + name = e[1] + high_roll = e[2] + if poisson_rng_next( high_roll / 2 ) == 1 then + table.insert(tile_entity_list, {name=name, position={x,y}}) + end + end + + return tile_entity_list +end