From 75f55e6d38a8f1518c87cf8fc3463c20e0b0765c Mon Sep 17 00:00:00 2001 From: Joshua Moerman Date: Sun, 3 Jun 2012 12:30:18 +0200 Subject: [PATCH] slaves work nicely now --- bring | 2 +- slave | 55 +++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/bring b/bring index 1f65a4c..6dfd2c1 100644 --- a/bring +++ b/bring @@ -19,7 +19,7 @@ if message == "ack" then print("He returned safely :)") elseif message == "empty" then - printf("There is no " .. args[1]) + print("There is no " .. args[1]) else print("No slave responded for " .. args[1]) end diff --git a/slave b/slave index 04a8638..66ac7a7 100644 --- a/slave +++ b/slave @@ -1,24 +1,55 @@ local args = { ... } +local threshold = 5 + +local function count_total() + local c = 0 + for i = 1, 9 do c = c + turtle.getItemCount(i) end + return c +end + +local function count_space() + local c = 0 + for i = 1, 9 do c = c + turtle.getItemSpace(i) end + return c +end rednet.open("right") while true do -- we are using wireless to get the distance -- so the master should be aligned with the slaves - local id, mess, dist = rednet.receive() + local id, mess, dist = rednet.receive(1) if mess == args[1] then - rednet.send(id, "ack") - turtle.up() - for i = 1, dist do turtle.back() end + if count_total() < threshold then + rednet.send(id, "empty") + else + rednet.send(id, "ack") + + -- Wait for the pipes to be empty (and not leak) + rs.setOutput("left", false) + sleep(1) - print("I will leave again in 5 seconds...") - sleep(5) - print("Bye!") + -- GO!!! + turtle.up() + for i = 1, dist do turtle.forward() end - for i = 1, dist do turtle.forward() end - turtle.down() - rednet.send(id, "return") + print("I will leave again in 5 seconds...") + sleep(5) + print("Bye!") + + for i = 1, dist do turtle.back() end + turtle.down() + rednet.send(id, "return") + print("Back home :)") + end end -end --- TODO: activate redstone for the buildcraft engine + -- This will power the engine next to the turtle + -- We don't want to fill if we're full + -- NOTE: we can't use the side of the modem... + if count_space() > threshold then + rs.setOutput("left", true) + else + rs.setOutput("left", false) + end +end