209 lines
7.5 KiB
Lua

--- Pipes
-- @module Pipes
local Pipes = {}
setmetatable(Pipes, {__index = require('stdlib/data/modules/sprites')})
--Define pipe connection pipe pictures, not all entities use these. This function needs some work though.
function Pipes.pictures(pictures, shift_north, shift_south, shift_west, shift_east, replacements)
local new_pictures = {
north = shift_north and
{
filename = '__base__/graphics/entity/' .. pictures .. '/' .. pictures .. '-pipe-N.png',
priority = 'extra-high',
width = 35,
height = 18,
shift = shift_north
} or
Pipes.empty_picture(),
south = shift_south and
{
filename = '__base__/graphics/entity/' .. pictures .. '/' .. pictures .. '-pipe-S.png',
priority = 'extra-high',
width = 44,
height = 31,
shift = shift_south
} or
Pipes.empty_picture(),
west = shift_west and
{
filename = '__base__/graphics/entity/' .. pictures .. '/' .. pictures .. '-pipe-W.png',
priority = 'extra-high',
width = 19,
height = 37,
shift = shift_west
} or
Pipes.empty_picture(),
east = shift_east and
{
filename = '__base__/graphics/entity/' .. pictures .. '/' .. pictures .. '-pipe-E.png',
priority = 'extra-high',
width = 20,
height = 38,
shift = shift_east
} or
Pipes.empty_picture()
}
for direction, image in pairs(replacements or {}) do
if not (new_pictures[direction].filename == '__core__/graphics/empty.png') then
new_pictures[direction].filename = image.filename
new_pictures[direction].width = image.width
new_pictures[direction].height = image.height
new_pictures[direction].priority = image.priority or new_pictures[direction].priority
end
end
return new_pictures
end
--return pipe covers for true directions.
function Pipes.covers(n, s, w, e)
if (n == nil and s == nil and w == nil and e == nil) then
n, s, e, w = true, true, true, true
end
n =
n and
{
layers = {
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-north.png',
priority = 'extra-high',
width = 64,
height = 64,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-north.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5
}
},
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-north-shadow.png',
priority = 'extra-high',
width = 64,
height = 64,
draw_as_shadow = true,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-north-shadow.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5,
draw_as_shadow = true
}
}
}
} or
Pipes.empty_picture()
e =
e and
{
layers = {
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-east.png',
priority = 'extra-high',
width = 64,
height = 64,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-east.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5
}
},
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-east-shadow.png',
priority = 'extra-high',
width = 64,
height = 64,
draw_as_shadow = true,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-east-shadow.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5,
draw_as_shadow = true
}
}
}
} or
Pipes.empty_picture()
s =
s and
{
layers = {
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-south.png',
priority = 'extra-high',
width = 64,
height = 64,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-south.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5
}
},
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-south-shadow.png',
priority = 'extra-high',
width = 64,
height = 64,
draw_as_shadow = true,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-south-shadow.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5,
draw_as_shadow = true
}
}
}
} or
Pipes.empty_picture()
w =
w and
{
layers = {
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-west.png',
priority = 'extra-high',
width = 64,
height = 64,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-west.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5
}
},
{
filename = '__base__/graphics/entity/pipe-covers/pipe-cover-west-shadow.png',
priority = 'extra-high',
width = 64,
height = 64,
draw_as_shadow = true,
hr_version = {
filename = '__base__/graphics/entity/pipe-covers/hr-pipe-cover-west-shadow.png',
priority = 'extra-high',
width = 128,
height = 128,
scale = 0.5,
draw_as_shadow = true
}
}
}
} or
Pipes.empty_picture()
return {north = n, south = s, east = e, west = w}
end
return Pipes