mirror of
https://github.com/Refactorio/RedMew.git
synced 2025-03-03 14:53:01 +02:00
added square spiral
This commit is contained in:
parent
491f74a5fd
commit
805cc14fdd
103
map_gen/presets/square_spiral.lua
Normal file
103
map_gen/presets/square_spiral.lua
Normal file
@ -0,0 +1,103 @@
|
||||
local b = require 'map_gen.shared.builders'
|
||||
|
||||
local seed1 = 320420
|
||||
local seed2 = 420320
|
||||
|
||||
local patch = b.rectangular_spiral(5)
|
||||
local bounds = b.rectangle(46, 43)
|
||||
bounds = b.translate(bounds, 0, 3)
|
||||
patch = b.all {bounds, patch}
|
||||
|
||||
local small_patch = b.rectangular_spiral(5)
|
||||
local small_bounds = b.rectangle(25, 33)
|
||||
small_bounds = b.translate(small_bounds, -1, -2)
|
||||
small_patch = b.all {small_bounds, small_patch}
|
||||
|
||||
local value = b.manhattan_value
|
||||
|
||||
local empty = function()
|
||||
return nil
|
||||
end
|
||||
local iron = b.resource(patch, 'iron-ore', value(250, 3))
|
||||
local copper = b.resource(patch, 'copper-ore', value(250, 3))
|
||||
local stone = b.resource(patch, 'stone', value(250, 2))
|
||||
local coal = b.resource(patch, 'coal', value(250, 2))
|
||||
local uranium = b.resource(small_patch, 'uranium-ore', value(125, 2))
|
||||
local oil = b.resource(b.throttle_world_xy(small_patch, 1, 5, 1, 5), 'crude-oil', value(50000, 250))
|
||||
|
||||
local patches = {
|
||||
{empty, 300},
|
||||
{iron, 20},
|
||||
{copper, 12},
|
||||
{stone, 4},
|
||||
{coal, 6},
|
||||
{uranium, 2},
|
||||
{oil, 4}
|
||||
}
|
||||
|
||||
local Random = require 'map_gen.shared.random'
|
||||
local random = Random.new(seed1, seed2)
|
||||
|
||||
local total_weights = {}
|
||||
local t = 0
|
||||
for _, v in pairs(patches) do
|
||||
t = t + v[2]
|
||||
table.insert(total_weights, t)
|
||||
end
|
||||
|
||||
local p_cols = 50
|
||||
local p_rows = 50
|
||||
local pattern = {}
|
||||
|
||||
for _ = 1, p_cols do
|
||||
local row = {}
|
||||
table.insert(pattern, row)
|
||||
for _ = 1, p_rows do
|
||||
local i = random:next_int(1, t)
|
||||
|
||||
local index = table.binary_search(total_weights, i)
|
||||
if (index < 0) then
|
||||
index = bit32.bnot(index)
|
||||
end
|
||||
|
||||
local shape = patches[index][1]
|
||||
|
||||
local flip = random:next_int(1, 4)
|
||||
if flip == 2 then
|
||||
shape = b.flip_x(shape)
|
||||
elseif flip == 3 then
|
||||
shape = b.flip_y(shape)
|
||||
elseif flip == 4 then
|
||||
shape = b.flip_xy(shape)
|
||||
end
|
||||
|
||||
table.insert(row, shape)
|
||||
end
|
||||
end
|
||||
|
||||
patches = b.grid_pattern(pattern, p_cols, p_rows, 96, 96)
|
||||
|
||||
local spiral = b.rectangular_spiral(96)
|
||||
|
||||
local map = b.apply_entity(spiral, patches)
|
||||
|
||||
local start_iron = b.resource(b.full_shape, 'stone', function() return 800 end)
|
||||
local start_copper = b.resource(b.full_shape, 'coal', function() return 400 end)
|
||||
local start_stone = b.resource(b.full_shape, 'copper-ore', function() return 800 end)
|
||||
local start_coal = b.resource(b.full_shape, 'iron-ore', function() return 1600 end)
|
||||
local start_spiral = b.segment_pattern({start_iron, start_copper, start_stone, start_coal})
|
||||
|
||||
start_spiral = b.apply_entity(patch, start_spiral)
|
||||
start_spiral = b.any{start_spiral, b.full_shape}
|
||||
start_spiral = b.translate(start_spiral, 0, -5)
|
||||
|
||||
map = b.choose(b.rectangle(96), start_spiral, map)
|
||||
|
||||
map = b.change_map_gen_collision_tile(map, 'water-tile', 'grass-1')
|
||||
|
||||
local sea = b.tile('water')
|
||||
sea = b.fish(sea, 0.00125)
|
||||
|
||||
map = b.if_else(map, sea)
|
||||
|
||||
return map
|
@ -62,6 +62,7 @@ local tiles_per_tick = 32
|
||||
--shape = require "map_gen.presets.plus"
|
||||
--shape = require "map_gen.presets.honeycomb"
|
||||
--shape = require "map_gen.presets.line_and_trees"
|
||||
--shape = require "map_gen.presets.square_spiral"
|
||||
--shape = require "map_gen.presets.test"
|
||||
|
||||
--shapes--
|
||||
|
Loading…
x
Reference in New Issue
Block a user