Upgraded the linker

This commit is contained in:
2024-05-20 19:06:14 +02:00
parent 6a2c44da91
commit 2c8f51f8ba
3 changed files with 91 additions and 47 deletions
+56 -11
View File
@@ -63,7 +63,7 @@ function logikraft.rotateCable(name,r)
local newconn = {}
for i,v in ipairs(conn)
do
newconn[i] = rotate4dir(v,r)
newconn[i] = logikraft.rotate4dir(v,r)
end
table.sort(newconn)
return logikraft.cableFromConns(newconn)
@@ -101,8 +101,11 @@ end
--[[
Returns {newcablea,newcableb} if the two cables are contiguous
Returns nil otherwise
If namea or nameb is nil, no cable is present, and we create a single pin, or we connect to the conn in the direction
If a or b is nil, we consider that
--]]
function logikraft.connectContiguousCable(namea,posa,a,nameb,posb,b)
print("Connecting "..tostring(namea).." with "..tostring(nameb))
local dira = (posa.y == posb.y) and (
(posa.z + 1 == posb.z and posa.x == posb.x and 3) or
(posa.x + 1 == posb.x and posa.z == posb.z and 2) or
@@ -112,21 +115,63 @@ function logikraft.connectContiguousCable(namea,posa,a,nameb,posb,b)
if dira == nil
then return nil
end
print(dira)
print(logikraft.rotate4dir(4,math.fmod(dira,4)))
if not namea
then
namea = logikraft.cableFromConns({logikraft.rotate4dir(4,6-dira)})
a = 1 -- There is only one nodebox
end
if not nameb
then
nameb = logikraft.cableFromConns({logikraft.rotate4dir(4,4-dira)})
b = 1 -- There is only one nodebox
end
local cia
if not a
then
cia = logikraft.connFromDir(namea,dira)
if not cia
then
-- We need to add a tip to a
local connsa = table.copy(logikraft.cables[namea].conns)
table.insert(connsa,logikraft.rotate4dir(4,6-dira))
table.sort(connsa)
namea = logikraft.cableFromConns(connsa)
cia = logikraft.connFromDir(namea,dira)
end
else
cia = logikraft.cables[namea].nbToConn[a]
end
local cib
if not b
then
cib = logikraft.connFromDir(nameb,math.fmod(dira+2,4))
if not cib
then
-- We need to add a tip to b
local connsb = table.copy(logikraft.cables[nameb].conns)
table.insert(connsb,logikraft.rotate4dir(4,4-dira))
table.sort(connsb)
nameb = logikraft.cableFromConns(connsb)
cib = logikraft.connFromDir(nameb,math.fmod(dira+2,4))
end
else
cib = logikraft.cables[nameb].nbToConn[b]
end
print(namea)
print(nameb)
local connsa = table.copy(logikraft.cables[namea].conns)
local connsb = table.copy(logikraft.cables[nameb].conns)
print(dump(connsa))
print(dump(connsb))
local cia = logikraft.cables[namea].nbToConn[a]
local cib = logikraft.cables[nameb].nbToConn[b]
--print(dump(connsa))
--print(dump(connsb))
local cia2 = logikraft.connFromDir(namea,dira)
local cib2 = logikraft.connFromDir(nameb,math.fmod(dira+2,4))
print(dira)
print(cia)
print(cia2)
print(cib)
print(cib2)
-- (nba == nil) -> Need to add dira to the a
-- (a == nba) -> Already connected