435 lines
7.2 KiB
Lua
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
|