1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2024-12-12 10:04:40 +02:00
RedMew/map_gen/presets/web.lua
2018-01-21 15:30:42 +00:00

71 lines
2.1 KiB
Lua

map_gen_decoratives = false -- Generate our own decoratives
map_gen_rows_per_tick = 8 -- Inclusive integer between 1 and 32. Used for map_gen_threaded, higher numbers will generate map quicker but cause more lag.
-- Recommend to use generate, but generate_not_threaded may be useful for testing / debugging.
--require "map_gen.shared.generate_not_threaded"
require "map_gen.shared.generate"
local stripe_thickness = 24
local stripe_distance = 384
local stripes = throttle_y(full_builder,stripe_thickness,stripe_distance)
local joint = rectangle_builder(64)
joint = rotate(joint,degrees(45))
joint = translate(joint, 0, stripe_thickness / 2)
local joints = single_y_pattern_builder(joint, stripe_distance)
stripes = compound_or{stripes, joints}
local lines = {}
local count = 8
local angle = 360 / count
local offset = (180 / count) + 90
for i = 0, count - 1 do
local line =rotate(stripes, degrees(i * angle + offset))
table.insert(lines, line)
end
local web = segment_pattern_builder(lines)
web = rotate(web, degrees(180 / count))
local path = path_builder(stripe_thickness)
local leg = rectangle_builder(32,480)
local head = translate (oval_builder(32, 64), 0, -64)
local body = translate (circle_builder(64), 0, 64)
local count = 10
local angle = 360 / count
local list = { head, body }
for i = 1, (count / 2) - 1 do
local shape = rotate(leg, degrees(i * angle))
table.insert( list, shape )
end
local spider = compound_or(list)
spider = scale(spider,2,2)
local e = empty_builder
local function s(r)
return rotate(spider, degrees(r))
end
local pattern =
{
{e , s(90) , e , s(0) , e , s(270)},
{s(0) , e , e , e , e , e },
{e , e , s(45) , e , s(315), e },
{s(90) , e , e , e , e , e },
{e , e , s(135), e , s(225), e },
{s(180), e , e , e , e , e },
}
local spiders = grid_pattern_builder(pattern, 6, 6, 820, 820)
local map = compound_or{ web, path, rotate(path, degrees(45)), spiders }
local start = circle_builder(150)
map = choose(start, full_builder, map)
--map = scale(map, 0.5, 0.5)
return map