Advertisement
sanderronde

interpreter.lua

Jan 3rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.06 KB | None | 0 0
  1. -- Interpreter = 18
  2. -- Controller = 12
  3. local CONTROLLER = 12
  4.  
  5. local has_no_fuel = false
  6. local performing_task = false
  7. local ready = false
  8.  
  9. local function handleControllerMessage(msg)
  10.     -- Received as value - 5
  11.     if msg == "bake_bread" then
  12.         print("Setting bake_bread signal")
  13.         redstone.setAnalogOutput("front", 10)
  14.     elseif msg == "farm" then
  15.         print("Setting farm signal")
  16.         redstone.setAnalogOutput("front", 11)
  17.     end
  18.  
  19.     sleep(5)
  20.     redstone.setOutput("front", false)
  21. end
  22.  
  23. local function handleController()
  24.     local res = rednet.receive(1)
  25.     if not res then
  26.         return
  27.     end
  28.     local id, msg = res
  29.  
  30.     if id == CONTROLLER then
  31.         handleControllerMessage(msg)
  32.     end
  33. end
  34.  
  35. local function send_has_fuel()
  36.     print("Sending has_fuel")
  37.     rednet.send(CONTROLLER, "has_fuel")
  38. end
  39.  
  40. local function send_has_no_fuel()
  41.     print("Sending has_no_fuel")
  42.     rednet.send(CONTROLLER, "has_no_fuel")
  43. end
  44.  
  45. local function send_performing_task()
  46.     print("Sending performing_task")
  47.     rednet.send(CONTROLLER, "performing_task")
  48. end
  49.  
  50. local function send_done_task()
  51.     print("Sending done_task")
  52.     rednet.send(CONTROLLER, "done_task")
  53. end
  54.  
  55. local function handleBot()
  56.     local val = redstone.getAnalogInput("front")
  57.     if val == 11 then
  58.         -- No fuel, tell the controller
  59.         if has_no_fuel then
  60.             -- Already sent message
  61.             return
  62.         end
  63.         has_no_fuel = true
  64.         send_has_no_fuel()
  65.     elseif val == 10 then
  66.         -- Busy performing task
  67.         if performing_task then
  68.             -- Already sent message
  69.             return
  70.         end
  71.         performing_task = true
  72.         send_performing_task()
  73.     elseif val == 0 and has_no_fuel then
  74.         -- Changed to having fuel
  75.         has_no_fuel = false
  76.         send_has_fuel()
  77.     elseif val == 9 and performing_task then
  78.         -- Done with task
  79.         performing_task = false
  80.         send_done_task()
  81.     elseif val == 8 then
  82.         -- Ready
  83.         if not ready then
  84.             print("Sending ready")
  85.             rednet.send(CONTROLLER, "ready")
  86.             ready = true
  87.         end
  88.     end
  89. end
  90.  
  91. local function interpret()
  92.     while true do
  93.         handleBot()
  94.         handleController()
  95.     end
  96. end
  97.  
  98. local function init()
  99.     rednet.open("right")
  100.     interpret()
  101. end
  102.  
  103. init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement