diff --git a/dominic/canemine.lua b/dominic/canemine.lua index 01e8738..847e0d8 100644 --- a/dominic/canemine.lua +++ b/dominic/canemine.lua @@ -1,4 +1,11 @@ args = {...} +status = { + name = os.getComputerLabel(), + id = os.getComputerID(), + fuel = "", + state = "init", + job = nil +} function noop() end @@ -143,7 +150,7 @@ function digShaft() end function digTo(x, z) - print("Digging to rel. coord ("..tostring(x)..", "..tostring(z)..")") + --print("Digging to rel. coord ("..tostring(x)..", "..tostring(z)..")") while z > 0 do moveSafe(turtle.forward, turtle.inspect, turtle.dig) z = z - 1 @@ -304,7 +311,7 @@ function goToJob() end function waitForJob() - print("Waiting for job...") + --print("Waiting for job...") while true do status, block = turtle.inspectDown() if status and block["name"] == "computercraft:wired_modem_full" then @@ -320,12 +327,12 @@ function waitForJob() sender, message, proto = rednet.receive("newjob", 2) if message then job = tonumber(message) - print("Received job "..tostring(job)) + --print("Received job "..tostring(job)) return job else if not retrying then retrying = true - print("No job received. I will keep retrying.") + --print("No job received. I will keep retrying.") end end end @@ -340,22 +347,61 @@ function emptyToBarrel() end end +function drawStatus() + print("Turtle ("..status["id"]..")") + print() + print(" \""..status["name"].."\"") + print() + print() + if status["job"] then + print("Current job: "..status["job"]) + else + print("Current job: ") + end + print() + print("Last job fuel consumption: "..status["fuel"]) + print() + print("Status:") + print(" "..status["state"]) + print() + print() +end + while true do + status["state"] = "Waiting for job..." + drawStatus() thejob = waitForJob() + status["job"] = thejob + status["state"] = "Refueling..." + drawStatus() doRefuel() fuel = turtle.getFuelLevel() + status["state"] = "Headed to the jobsite..." + drawStatus() goToJob() x, z = ithSpot(thejob) digTo(x,z) + status["state"] = "Digging the Shaft..." + drawStatus() digShaft() + status["state"] = "Returning to the station..." + drawStatus() goToSpawn(x, z) path = math.floor(math.random() + 0.5) + status["state"] = "Unloading Inventory..." + drawStatus() goToBarrel(path) emptyToBarrel() leaveBarrel(path) fuelconsumed = fuel - turtle.getFuelLevel() - print("I consumed "..tostring(fuelconsumed).." fuel") - print("Reporting Duty") + --print("I consumed "..tostring(fuelconsumed).." fuel") + --print("Reporting Duty") + status["fuel"] = fuelconsumed + status["state"] = "Reporting duty..." + drawStatus() reportDuty(thejob, fuelconsumed) + status["job"] = nil + status["state"] = "Going back in line..." + drawStatus() enqueueTurtle() end