From 9d3ab2f0e00b1057c0634fa9fd3ae9893fb41ca7 Mon Sep 17 00:00:00 2001 From: MysaaJava Date: Sun, 19 May 2024 00:16:20 +0200 Subject: [PATCH] Added a lot of circuits code --- blocks/cable.lua | 2 + blocks/circuit.lua | 3 +- blocks/component.lua | 16 +++--- circuits.lua | 129 +++++++++++++++++++++++++++++++++++++++++-- items.lua | 22 ++++---- utils.lua | 33 ++++++++++- 6 files changed, 179 insertions(+), 26 deletions(-) diff --git a/blocks/cable.lua b/blocks/cable.lua index ab390fa..51f418c 100644 --- a/blocks/cable.lua +++ b/blocks/cable.lua @@ -113,6 +113,7 @@ end nbconn: Which correspond each nodebox correspond to ex: {1,1,2,1} -> nodeboxes 1,2,3 correspond to connection ES, and nodebox 2 correspond to connection W --]] +logikraft.cablesblocks = {} logikraft.cablesnb = {} logikraft.cablesconn = {} logikraft.cablesnbconn = {} @@ -150,6 +151,7 @@ local function createCables(name,nodeboxes,connections,nbconn) if name == "EW8_N1_S1" then print(dump(connections2)) end + logikraft.cablesblocks["logikraft:cable_"..name] = name logikraft.cablesnb[name] = nodeboxes logikraft.cablesconn[name] = connections2 logikraft.cablesnbconn[name] = nbconn2 diff --git a/blocks/circuit.lua b/blocks/circuit.lua index 793ad18..f5084c4 100644 --- a/blocks/circuit.lua +++ b/blocks/circuit.lua @@ -33,7 +33,8 @@ minetest.register_node("logikraft:circuitBlock", { description = "Circuit Block", tiles = {"circuit_block.png"}, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - logikraft.discoverBlocks(pos) + local poz = logikraft.discoverBlocks(pos) + local circuit = logikraft.compileCircuit(poz) end, groups = {circuitry = 1,dig_immediate = 3} }) \ No newline at end of file diff --git a/blocks/component.lua b/blocks/component.lua index 26ba398..882c4c3 100644 --- a/blocks/component.lua +++ b/blocks/component.lua @@ -12,16 +12,16 @@ end -- | XXX h -- +−−−−−−−−−−−> x+ -- {name,width,height,{cables_left,cables_right,cables_top,cables_bottom}} -components = {} -components["and"] = {2,3,{{"in_2",nil,"in_1"},{nil,"out",nil},nil,nil}} -components["switch"] = {2,1,{{"in"},{"out"},{"activate",nil},nil}} -components["demux"] = {2,8,{{nil,nil,nil,nil,nil,"in_3","in_2","in_1"},{"out_8","out_7","out_6","out_5","out_4","out_3","out_2","out_1"},nil,nil}} - +logikraft.components = { + ["and"] = {2,3,{{"in_2",nil,"in_1"},{nil,"out",nil},nil,nil}}, + ["switch"] = {2,1,{{"in"},{"out"},{"activate",nil},nil}}, + ["demux"] = {2,8,{{nil,nil,nil,nil,nil,"in_3","in_2","in_1"},{"out_8","out_7","out_6","out_5","out_4","out_3","out_2","out_1"},nil,nil}} +} -- componentsblocks["block"] = {name,x,y} -componentsblocks = {} +logikraft.componentsblocks = {} -for name,cmp in pairs(components) +for name,cmp in pairs(logikraft.components) do local w = cmp[1] local h = cmp[2] @@ -109,7 +109,7 @@ do end end }) - componentsblocks["nodename"] = {name,x,y} + logikraft.componentsblocks[nodename] = {name = name, x = x, y = y} end end diff --git a/circuits.lua b/circuits.lua index 80f43d4..13cc66f 100644 --- a/circuits.lua +++ b/circuits.lua @@ -31,9 +31,6 @@ function logikraft.discoverBlocks(pos) do local p = poz[j] j = j+1 - print(dump(poz)) - print(i) - print(j) local neighbourhood = { {x = p.x+1, y = p.y, z = p.z}, {x = p.x-1, y = p.y, z = p.z}, @@ -52,6 +49,128 @@ function logikraft.discoverBlocks(pos) end end end - minetest.chat_send_all("Discovered ".. (i-1) .. " blocks") -end \ No newline at end of file + return poz +end + +local function collapseConnectionsStep(connz) + for k,conna in ipairs(connz) + do + for l,connb in ipairs(connz) + do + if k