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

236 lines
5.4 KiB
Lua

local fv = {}
local fh = {}
--------------------------------------------------------------------
---- curved-rail (Vanilla) ----
fv["curved-rail"] = function(ent)
local dir = ent.direction or 0
ent.direction = (5 - dir +8)%8
end
--[[
0 5
1 4
2 3
3 2
4 1
5 0
6 7
7 6
]]--
fh["curved-rail"] = function(ent)
local dir = ent.direction or 0
ent.direction = (1 - dir +8)%8
end
--------------------------------------------------------------------
---- storage-tank (Vanilla) ----
fv["storage-tank"] = function(ent)
if ent.direction == 2 or ent.direction == 6 then
ent.direction = 4
else
ent.direction = 2
end
end
--[[
?0? 2
2 4
?4? 2
6 4
?*? 2
]]--
fh["storage-tank"] = function(ent)
if ent.direction == 2 or ent.direction == 6 then
ent.direction = 4
else
ent.direction = 2
end
end
--------------------------------------------------------------------
---- rail-signal (Vanilla) ----
fv["rail-signal"] = function(ent)
local dir = ent.direction or 0
if dir == 1 then
ent.direction = 7
elseif dir == 2 then
ent.direction = 6
elseif dir == 3 then
ent.direction = 5
elseif dir == 5 then
ent.direction = 3
elseif dir == 6 then
ent.direction = 2
elseif dir == 7 then
ent.direction = 1
end
end
--[[
(0 0)
1 7
2 6
3 5
(4 4)
5 3
6 2
7 1
]]--
fh["rail-signal"] = function(ent)
local dir = ent.direction or 0
if dir == 0 then
ent.direction = 4
elseif dir == 1 then
ent.direction = 3
elseif dir == 3 then
ent.direction = 1
elseif dir == 4 then
ent.direction = 0
elseif dir == 5 then
ent.direction = 7
elseif dir == 7 then
ent.direction = 5
end
end
---- rail-chain-signal (Vanilla) ----
fv["rail-chain-signal"] = fv["rail-signal"]
fh["rail-chain-signal"] = fh["rail-signal"]
--------------------------------------------------------------------
---- train-stop (Vanilla) ----
fv["train-stop"] = function(ent)
local dir = ent.direction or 0
if dir == 2 then
ent.direction = 6
elseif dir == 6 then
ent.direction = 2
end
end
--[[
2 6
6 2
]]--
fh["train-stop"] = function(ent)
local dir = ent.direction or 0
if dir == 0 then
ent.direction = 4
elseif dir == 4 then
ent.direction = 0
end
end
--------------------------------------------------------------------
-- splitter (Vanilla) ----
fv["splitter"] = function(ent)
local dir = ent.direction or 0
--[[
Initial:
For a vertical flip (horizontal axe) (up/down) the "entities" with "name" equal to "splitter", "fast-splitter" or "express-splitter"
with "direction" 2 or 6 should toggle the "input_priority" and "output_priority" fields (if exists).
Update:
The flip rotate the splitter then we must toggle the left/right in all cases. No need to check the direction.
]]--
local function toggle_priority(pri)
return ({left="right",right="left"})[pri] or pri
end
if ent.input_priority then
ent.input_priority = toggle_priority(ent.input_priority)
end
if ent.output_priority then
ent.output_priority = toggle_priority(ent.output_priority)
end
ent.direction = (4 -dir +8)%8
end
--[[
0 4
1 3
2 2
3 1
4 0
5 7
6 6
7 5
]]--
fh["splitter"] = function(ent)
local dir = ent.direction or 0
--[[
Initial:
For a horizontal flip (vertical axe) (left/right) the "entities" with "name" equal to "splitter", "fast-splitter" or "express-splitter"
with "direction" 0 or 4 should toggle the "input_priority" and "output_priority" fields (if exists).
Update:
The flip rotate the splitter then we must toggle the left/right in all cases. No need to check the direction.
]]--
local function toggle_priority(pri)
return ({left="right",right="left"})[pri] or pri
end
if ent.input_priority then
ent.input_priority = toggle_priority(ent.input_priority)
end
if ent.output_priority then
ent.output_priority = toggle_priority(ent.output_priority)
end
ent.direction = (16 - dir)%8
end
---- fast-splitter (Vanilla) ----
fv["fast-splitter"] = fv["splitter"]
fh["fast-splitter"] = fh["splitter"]
---- express-splitter (Vanilla) ----
fh["express-splitter"] = fh["splitter"]
fv["express-splitter"] = fv["splitter"]
--------------------------------------------------------------------
-- the default handler --
local function autowarning(ent)
if string.find(ent.name, "tank") or string.find(ent.name, "splitter") then
modwarning("possible tank or splitter not flipped (name="..tostring(ent.name).."). Please report it to the mod's Author.")
end
end
fv["*"] = function(ent)
--autowarning(ent)
local dir = ent.direction or 0
ent.direction = (4 -dir +8)%8
end
--[[
0 4
1 3
2 2
3 1
4 0
5 7
6 6
7 5
]]--
fh["*"] = function(ent)
--autowarning(ent)
local dir = ent.direction or 0
ent.direction = (8 -dir +8)%8
end
--------------------------------------------------------------------
---- Support Bob's Logistics' liquid tanks ----
fv["storage-tank-2"] = fv["storage-tank"] ; fh["storage-tank-2"] = fh["storage-tank"]
fv["storage-tank-3"] = fv["storage-tank"] ; fh["storage-tank-3"] = fh["storage-tank"]
fv["storage-tank-4"] = fv["storage-tank"] ; fh["storage-tank-4"] = fh["storage-tank"]
--------------------------------------------------------------------
---- Support Mini Machines' liquid tanks ----
fv["mini-tank-1"] = fv["storage-tank"] ; fh["mini-tank-1"] = fh["storage-tank"]
fv["mini-tank-2"] = fv["storage-tank"] ; fh["mini-tank-2"] = fh["storage-tank"]
fv["mini-tank-3"] = fv["storage-tank"] ; fh["mini-tank-3"] = fh["storage-tank"]
fv["mini-tank-4"] = fv["storage-tank"] ; fh["mini-tank-4"] = fh["storage-tank"]
return {fv=fv,fh=fh}