mirror of
https://github.com/Refactorio/RedMew.git
synced 2024-12-14 10:13:13 +02:00
i wanted to add the turkey ores from the 2018 map onto the 2019 terrain but can't clear out all the errors. going to have inebriate myself and see if that makes things better or worse. -11:10pm local
This commit is contained in:
parent
9a6e978a27
commit
bd8e289e58
@ -1,4 +1,6 @@
|
|||||||
local b = require "map_gen.shared.builders"
|
local b = require "map_gen.shared.builders"
|
||||||
|
local Random = require 'map_gen.shared.random'
|
||||||
|
local table = require 'utils.table'
|
||||||
local pic = require "map_gen.data.presets.turkey"
|
local pic = require "map_gen.data.presets.turkey"
|
||||||
local RS = require 'map_gen.shared.redmew_surface'
|
local RS = require 'map_gen.shared.redmew_surface'
|
||||||
local MGSP = require 'resources.map_gen_settings'
|
local MGSP = require 'resources.map_gen_settings'
|
||||||
@ -11,6 +13,136 @@ RS.set_map_gen_settings(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
local ore_seed = 3000
|
||||||
|
|
||||||
|
local turkey_pic = require 'map_gen.data.presets.turkey_bw'
|
||||||
|
local turkey = b.picture(turkey_pic)
|
||||||
|
turkey = b.invert(turkey)
|
||||||
|
local bounds = b.rectangle(turkey_pic.width, turkey_pic.height)
|
||||||
|
turkey = b.all {bounds, turkey}
|
||||||
|
|
||||||
|
local ham = b.picture(require 'map_gen.data.presets.ham')
|
||||||
|
|
||||||
|
ham = b.scale(ham, 64 / 127) --0.5
|
||||||
|
turkey = b.scale(turkey, 0.2)
|
||||||
|
|
||||||
|
local function value(base, mult, pow)
|
||||||
|
return function(x, y)
|
||||||
|
local d = math.sqrt(x * x + y * y)
|
||||||
|
return base + mult * d ^ pow
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function non_transform(shape)
|
||||||
|
return shape
|
||||||
|
end
|
||||||
|
|
||||||
|
local function uranium_transform(shape)
|
||||||
|
return b.scale(shape, 0.5)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function oil_transform(shape)
|
||||||
|
shape = b.scale(shape, 0.3)
|
||||||
|
shape = b.throttle_world_xy(shape, 1, 5, 1, 5)
|
||||||
|
return shape
|
||||||
|
end
|
||||||
|
|
||||||
|
local ores = {
|
||||||
|
{weight = 150},
|
||||||
|
{transform = non_transform, resource = 'iron-ore', value = value(250, 0.75, 1.2), weight = 16},
|
||||||
|
{transform = non_transform, resource = 'copper-ore', value = value(200, 0.75, 1.2), weight = 10},
|
||||||
|
{transform = non_transform, resource = 'stone', value = value(125, 0.3, 1.05), weight = 7},
|
||||||
|
{transform = non_transform, resource = 'coal', value = value(200, 0.8, 1.075), weight = 8},
|
||||||
|
{transform = uranium_transform, resource = 'uranium-ore', value = value(100, 0.3, 1.025), weight = 3},
|
||||||
|
{transform = oil_transform, resource = 'crude-oil', value = value(100000, 50, 1.1), weight = 6}
|
||||||
|
}
|
||||||
|
|
||||||
|
local total_ore_weights = {}
|
||||||
|
local ore_t = 0
|
||||||
|
for _, v in ipairs(ores) do
|
||||||
|
ore_t = ore_t + v.weight
|
||||||
|
table.insert(total_ore_weights, ore_t)
|
||||||
|
end
|
||||||
|
|
||||||
|
local random_ore = Random.new(ore_seed, ore_seed * 2)
|
||||||
|
local ore_pattern = {}
|
||||||
|
|
||||||
|
for r = 1, 50 do
|
||||||
|
local row = {}
|
||||||
|
ore_pattern[r] = row
|
||||||
|
local even_r = r % 2 == 0
|
||||||
|
for c = 1, 50 do
|
||||||
|
local even_c = c % 2 == 0
|
||||||
|
local shape
|
||||||
|
if even_r == even_c then
|
||||||
|
shape = turkey
|
||||||
|
else
|
||||||
|
shape = ham
|
||||||
|
end
|
||||||
|
|
||||||
|
local i = random_ore:next_int(1, ore_t)
|
||||||
|
local index = table.binary_search(total_ore_weights, i)
|
||||||
|
if (index < 0) then
|
||||||
|
index = bit32.bnot(index)
|
||||||
|
end
|
||||||
|
local ore_data = ores[index]
|
||||||
|
|
||||||
|
local transform = ore_data.transform
|
||||||
|
if not transform then
|
||||||
|
row[c] = b.no_entity
|
||||||
|
else
|
||||||
|
local ore_shape = transform(shape)
|
||||||
|
--local ore_shape = shape
|
||||||
|
|
||||||
|
local x = random_ore:next_int(-24, 24)
|
||||||
|
local y = random_ore:next_int(-24, 24)
|
||||||
|
ore_shape = b.translate(ore_shape, x, y)
|
||||||
|
|
||||||
|
local ore = b.resource(ore_shape, ore_data.resource, ore_data.value)
|
||||||
|
row[c] = ore
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local start_turkey =
|
||||||
|
b.segment_pattern {
|
||||||
|
b.resource(
|
||||||
|
turkey,
|
||||||
|
'iron-ore',
|
||||||
|
function()
|
||||||
|
return 1000
|
||||||
|
end
|
||||||
|
),
|
||||||
|
b.resource(
|
||||||
|
turkey,
|
||||||
|
'copper-ore',
|
||||||
|
function()
|
||||||
|
return 500
|
||||||
|
end
|
||||||
|
),
|
||||||
|
b.resource(
|
||||||
|
turkey,
|
||||||
|
'coal',
|
||||||
|
function()
|
||||||
|
return 750
|
||||||
|
end
|
||||||
|
),
|
||||||
|
b.resource(
|
||||||
|
turkey,
|
||||||
|
'stone',
|
||||||
|
function()
|
||||||
|
return 300
|
||||||
|
end
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
ore_pattern[1][1] = start_turkey
|
||||||
|
|
||||||
|
local ore_grid = b.grid_pattern_full_overlap(ore_pattern, 50, 50, 96, 96)
|
||||||
|
|
||||||
|
ore_grid = b.translate(ore_grid, -60, -20)
|
||||||
|
|
||||||
|
|
||||||
Event.add(
|
Event.add(
|
||||||
defines.events.on_tick,
|
defines.events.on_tick,
|
||||||
function(event)
|
function(event)
|
||||||
@ -21,6 +153,7 @@ Event.add(
|
|||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
pic = b.decompress(pic)
|
pic = b.decompress(pic)
|
||||||
|
|
||||||
local shape = b.picture(pic)
|
local shape = b.picture(pic)
|
||||||
|
Loading…
Reference in New Issue
Block a user