Aleksei-bird 7c9c708c92 Первый фикс
Пачки некоторых позиций увеличены
2024-03-01 20:54:33 +03:00

98 lines
4.3 KiB
Lua

local noise = require("noise")
local tne = noise.to_noise_expression
local util=require("util")
return function()
data:extend {
{
type = "noise-expression",
name = "target",
intended_property = "target",
expression = tne(0)
}
}
local i = 1
for name, tileData in pairs(data.raw.tile) do
if tileData.autoplace and tileData.autoplace.probability_expression ~= nil then
--require("noiseImpression")(tileData.autoplace.probability_expression);
data:extend {
{
type = "noise-expression",
name = "settings-target-" .. name,
intended_property = "target",
expression = util.deepcopy(tileData.autoplace.probability_expression)
},
}
i = i + 1
end
end
local halfCount = math.floor((i - 1) / 2) + 1
local expStep = 2
local exp = (halfCount / 2 - 1) * expStep
local current = 1
local alien = "Tile colors:"
local stat = "Tile equations:"
for name, tileData in pairs(data.raw.tile) do
if tileData.autoplace and tileData.autoplace.probability_expression ~= nil then
local target = noise.var("target")
local limCloserToNul = math.pow(10, exp - (expStep / 2))
local limCloserToInf = math.pow(10, exp + (expStep / 2))
local expr
alien = alien .. "\n" .. name .. " " .. util.RGBtoHEX(tileData.map_color)
tileData.map_color = util.generateColor(current)
if current < halfCount then
if current == 1 then --first
expr = noise.if_else_chain(noise.less_than(target, -limCloserToNul), 1e309, -1e309)
stat = stat .. "\n" .. (name .. " < " .. -limCloserToNul) .. " " .. util.RGBtoHEX(tileData.map_color)
elseif current == halfCount - 1 then --last
expr = noise.if_else_chain(noise.less_than(target, -limCloserToInf), -1e309,
noise.less_than(0, target),
-1e309, 1e309)
stat = stat .. "\n" .. (-limCloserToInf .. " <= " .. name .. " < 0") ..
" " .. util.RGBtoHEX(tileData.map_color)
else
expr = noise.if_else_chain(noise.less_than(target, -limCloserToInf), -1e309,
noise.less_than(-limCloserToNul, target), -1e309, 1e309)
stat = stat ..
"\n" ..
(-limCloserToInf .. " <= " .. name .. " < " .. -limCloserToNul) ..
" " .. util.RGBtoHEX(tileData.map_color)
end
exp = exp - expStep
elseif current > halfCount then
if current == halfCount + 1 then --first
expr = noise.if_else_chain(noise.less_or_equal(target, 0), -1e309,
noise.less_or_equal(limCloserToInf, target), -1e309, 1e309)
stat = stat .. "\n" .. ("0 < " .. name .. " <= " .. limCloserToInf) ..
" " .. util.RGBtoHEX(tileData.map_color)
elseif current == halfCount * 2 - 1 then --last
expr = noise.if_else_chain(noise.less_or_equal(limCloserToNul, target), 1e309, -1e309)
stat = stat .. "\n" .. (limCloserToNul .. " < " .. name) .. " " .. util.RGBtoHEX(tileData.map_color)
else
expr = noise.if_else_chain(noise.less_or_equal(target, limCloserToNul), -1e309,
noise.less_or_equal(limCloserToInf, target), -1e309, 1e309)
stat = stat ..
"\n" ..
(limCloserToNul .. " < " .. name .. " <= " .. limCloserToInf) ..
" " .. util.RGBtoHEX(tileData.map_color)
end
exp = exp + expStep
else --position in middle is expr==Zero
expr = noise.if_else_chain(noise.equals(target, tne(0)), 1e309, -1e309)
stat = stat .. "\n" .. (name .. " == 0") .. " " .. util.RGBtoHEX(tileData.map_color)
end
tileData.autoplace.probability_expression = expr
current = current + 1
end
end
log(alien)
log(stat)
end