Factorio-Paranoidal_mod/boblibrary_1.1.6/ore-icon-variations.lua
Aleksei-bird 7c9c708c92 Первый фикс
Пачки некоторых позиций увеличены
2024-03-01 20:54:33 +03:00

435 lines
7.2 KiB
Lua

local icon_piece_sizes = {
--1
{
{
width = 29,
height = 33,
},
{
width = 32,
height = 30,
},
{
width = 23,
height = 32,
},
{
width = 19,
height = 17,
},
{
width = 25,
height = 27,
},
{
width = 28,
height = 28,
},
{
width = 21,
height = 25,
},
{
width = 26,
height = 28,
},
{
width = 30,
height = 25,
},
{
width = 32,
height = 26,
},
{
width = 27,
height = 28,
},
{
width = 21,
height = 22,
},
{
width = 13,
height = 15,
},
{
width = 14,
height = 16,
},
{
width = 23,
height = 27,
},
},
--2
{
{
width = 13,
height = 21,
},
{
width = 20,
height = 16,
},
{
width = 33,
height = 23,
},
{
width = 17,
height = 21,
},
{
width = 31,
height = 28,
},
{
width = 20,
height = 31,
},
{
width = 36,
height = 28,
},
{
width = 20,
height = 20,
},
{
width = 14,
height = 17,
},
{
width = 24,
height = 23,
},
{
width = 24,
height = 20,
},
{
width = 21,
height = 25,
},
{
width = 19,
height = 19,
},
{
width = 17,
height = 16,
},
{
width = 43,
height = 34,
},
{
width = 35,
height = 41,
},
{
width = 38,
height = 36,
},
{
width = 46,
height = 29,
},
},
--3
{
{
width = 29,
height = 29,
},
{
width = 24,
height = 22,
},
{
width = 29,
height = 24,
},
{
width = 44,
height = 32,
},
{
width = 41,
height = 33,
},
{
width = 29,
height = 36,
},
{
width = 31,
height = 29,
},
{
width = 28,
height = 23,
},
{
width = 22,
height = 23,
},
{
width = 27,
height = 24,
},
{
width = 31,
height = 27,
},
{
width = 16,
height = 16,
},
{
width = 45,
height = 30,
},
},
--4
{
{
width = 30,
height = 33,
},
{
width = 37,
height = 29,
},
{
width = 27,
height = 31,
},
{
width = 12,
height = 13,
},
{
width = 12,
height = 11,
},
{
width = 19,
height = 19,
},
{
width = 38,
height = 24,
},
{
width = 21,
height = 17,
},
{
width = 36,
height = 33,
},
{
width = 18,
height = 20,
},
{
width = 37,
height = 32,
},
{
width = 34,
height = 43,
},
{
width = 19,
height = 15,
},
{
width = 28,
height = 33,
},
{
width = 31,
height = 21,
},
{
width = 12,
height = 11,
},
{
width = 25,
height = 26,
},
{
width = 23,
height = 14,
},
{
width = 11,
height = 15,
},
{
width = 31,
height = 31,
},
},
--5
{
{
width = 25,
height = 21,
},
{
width = 20,
height = 24,
},
{
width = 26,
height = 20,
},
{
width = 29,
height = 24,
},
{
width = 22,
height = 16,
},
{
width = 26,
height = 16,
},
{
width = 32,
height = 22,
},
{
width = 16,
height = 23,
},
{
width = 25,
height = 22,
},
{
width = 27,
height = 28,
},
{
width = 33,
height = 20,
},
{
width = 19,
height = 14,
},
{
width = 21,
height = 16,
},
{
width = 19,
height = 23,
},
{
width = 16,
height = 17,
},
{
width = 19,
height = 18,
},
},
}
local icon_piece_counts = { 15, 18, 13, 20, 16 }
local layer_shift_directions = { { -1, -1 }, { 1, -1 }, { -1, 1 }, { 1, 1 } }
function bobmods.lib.resource.get_random_icon_layer(type, tint, layer)
local piece = math.random(icon_piece_counts[type])
local width = icon_piece_sizes[type][piece].width
local height = icon_piece_sizes[type][piece].height
local scale = 0.5
local icon_size = width
local size_shift = { 0, 0 }
if width > height then
size_shift[2] = (width - height) / 2
elseif height > width then
icon_size = height
size_shift[1] = (height - width) / 2
end
return {
icon = string.format("__boblibrary__/graphics/icons/ore/%d/%d.png", type, piece),
icon_size = icon_size,
tint = tint,
scale = scale,
shift = {
((32 - width / 2) + size_shift[1]) * layer_shift_directions[layer][1] * scale,
((32 - height / 2) + size_shift[2]) * layer_shift_directions[layer][2] * scale,
},
}
end
function bobmods.lib.resource.get_random_icon(type, tint)
return {
{ icon = "__boblibrary__/graphics/icons/ore/blank.png", icon_size = 64, scale = 0.5 },
bobmods.lib.resource.get_random_icon_layer(type, tint, 1),
bobmods.lib.resource.get_random_icon_layer(type, tint, 2),
bobmods.lib.resource.get_random_icon_layer(type, tint, 3),
bobmods.lib.resource.get_random_icon_layer(type, tint, 4),
}
end
function bobmods.lib.resource.get_icon_variation_layer(type, tint, layer)
local piece = math.random(icon_piece_counts[type])
local width = icon_piece_sizes[type][piece].width
local height = icon_piece_sizes[type][piece].height
local scale = 0.25
local shift = util.by_pixel(4 * layer_shift_directions[layer][1], 4 * layer_shift_directions[layer][2]) -- middle of the quadrant.
if width > 32 or height > 32 then
shift = util.by_pixel(
(32 - (width * 0.5)) * layer_shift_directions[layer][1] * 0.25,
(32 - (height * 0.5)) * layer_shift_directions[layer][2] * 0.25
) -- hard to the corner of the quadrant, overlap into the middle of the icon
end
return {
filename = string.format("__boblibrary__/graphics/icons/ore/%d/%d.png", type, piece),
width = width,
height = height,
tint = tint,
scale = scale,
shift = shift,
}
end
function bobmods.lib.resource.get_icon_variation_single(type, tint)
local piece = math.random(icon_piece_counts[type])
local width = icon_piece_sizes[type][piece].width
local height = icon_piece_sizes[type][piece].height
local scale = 0.5 * math.min(32.0 / width, 32.0 / height, 1.0)
-- if width > 32 or height > 32 then
-- end
return {
filename = string.format("__boblibrary__/graphics/icons/ore/%d/%d.png", type, piece),
width = width,
height = height,
tint = tint,
scale = scale,
}
end
function bobmods.lib.resource.get_icon_variation(type, tint)
return {
layers = {
bobmods.lib.resource.get_icon_variation_layer(type, tint, 1),
bobmods.lib.resource.get_icon_variation_layer(type, tint, 2),
bobmods.lib.resource.get_icon_variation_layer(type, tint, 3),
bobmods.lib.resource.get_icon_variation_layer(type, tint, 4),
},
}
end