You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
5.8 KiB

-------------------------------------------------------------------------------
--[[Helper Proto Functions]]--
local Proto = {}
--Quickly duplicate an existing prototype into a new one.
function Proto.dupli_proto( type, name1, name2, adaptMiningResult )
if data.raw[type][name1] then
local proto = table.deepcopy(data.raw[type][name1])
proto.name = name2
if adaptMiningResult then
if proto.minable and proto.minable.result then proto.minable.result = name2 end
end
if proto.place_result then proto.place_result = name2 end
if proto.result then proto.result = name2 end
return(proto)
else
error("prototype unknown " .. name1 )
return(nil)
end
end
--------------------------------------------------------------------------------------
--Prettier monolith extracting
function Proto.extract_monolith(filename, x, y, w, h)
return {
type = "monolith",
top_monolith_border = 0,
right_monolith_border = 0,
bottom_monolith_border = 0,
left_monolith_border = 0,
monolith_image = {
filename = filename,
priority = "extra-high-no-scale",
width = w,
height = h,
x = x,
y = y,
},
}
end
--Define pipe connection pipe pictures, not all entities use these. This function needs some work though.
Proto.pipes = function (pictures, shift_north, shift_south, shift_west, shift_east)
if pictures == "turret" then
shift_north = shift_north or {0, 0}
shift_south = shift_south or {0, 0}
shift_west = shift_west or {0, 0}
shift_east = shift_east or {0, 0}
return {
north =
{
filename = "__base__/graphics/entity/pipe/pipe-straight-vertical.png",
priority = "extra-high",
width = 44,
height = 42,
shift = shift_north
},
south =
{
filename = "__base__/graphics/entity/pipe/pipe-straight-vertical.png",
priority = "extra-high",
width = 44,
height = 42,
shift = shift_south
},
west =
{
filename = "__base__/graphics/entity/pipe/pipe-straight-horizontal.png",
priority = "extra-high",
width = 32,
height = 42,
shift = shift_west
},
east =
{
filename = "__base__/graphics/entity/pipe/pipe-straight-horizontal.png",
priority = "extra-high",
width = 32,
height = 42,
shift = shift_east
},
}
else
shift_north = shift_north or {0, 0}
shift_south = shift_south or {0, 0}
shift_west = shift_west or {0, 0}
shift_east = shift_east or {0, 0}
return
{
north =
{
filename = "__base__/graphics/entity/assembling-machine-2/pipe-north.png",
priority = "extra-high",
width = 40,
height = 45,
shift = shift_north
},
south =
{
filename = "__base__/graphics/entity/assembling-machine-2/pipe-south.png",
priority = "extra-high",
width = 40,
height = 45,
shift = shift_south
},
west =
{
filename = "__base__/graphics/entity/assembling-machine-2/pipe-west.png",
priority = "extra-high",
width = 40,
height = 45,
shift = shift_west
},
east =
{
filename = "__base__/graphics/entity/assembling-machine-2/pipe-east.png",
priority = "extra-high",
width = 40,
height = 45,
shift = shift_east
},
}
end
end
--Quick to use empty sprite
Proto.empty_sprite ={
filename = "__core__/graphics/empty.png",
priority = "extra-high",
width = 1,
height = 1
}
--Quick to use empty animation
Proto.empty_animation = {
filename = Proto.empty_sprite.filename,
width = Proto.empty_sprite.width,
height = Proto.empty_sprite.height,
line_length = 1,
frame_count = 1,
shift = { 0, 0},
animation_speed = 1,
direction_count=1
}
--return pipe covers for true directions.
Proto.pipe_covers = function(n, s, e, w)
if (n == nil and s == nil and e == nil and w == nil) then
n, s, e, w = true, true, true, true
end
if n == true then n = {
filename = "__base__/graphics/entity/pipe-covers/pipe-cover-north.png",
priority = "extra-high",
width = 44,
height = 32
}
else
n = Proto.empty_sprite
end
if e == true then
e = {
filename = "__base__/graphics/entity/pipe-covers/pipe-cover-east.png",
priority = "extra-high",
width = 32,
height = 32
}
else
e = Proto.empty_sprite
end
if s == true then
s =
{
filename = "__base__/graphics/entity/pipe-covers/pipe-cover-south.png",
priority = "extra-high",
width = 46,
height = 52
}
else
s = Proto.empty_sprite
end
if w == true then
w =
{
filename = "__base__/graphics/entity/pipe-covers/pipe-cover-west.png",
priority = "extra-high",
width = 32,
height = 32
}
else
w = Proto.empty_sprite
end
return {north = n, south = s, east = e, west = w}
end
return Proto