-
Notifications
You must be signed in to change notification settings - Fork 0
/
farmController.lua
64 lines (50 loc) · 1.75 KB
/
farmController.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
--
-- Created by IntelliJ IDEA.
-- User: Robyn
-- Date: 9/1/2019
-- Time: 4:03 PM
-- To change this template use File | Settings | File Templates.
--
local constants = require("constants")
function convertToTable(...)
return {...}
end
--BEGIN MAIN SCRIPT
rednet.open("back")
--Sync with available farmers
local farmers = convertToTable(rednet.lookup(constants.farmProtocol))
local ready = true
local farmerCount = 0
--Check farmers' statuses
for key, farmerId in pairs(farmers) do
farmerCount = farmerCount + 1
print("Checking status of farmer " .. farmerId)
rednet.send(farmerId, { type = constants.checkStatusMessage }, constants.farmProtocol)
local id, message = rednet.receive(constants.farmProtocol)
if message.type == constants.noFuelMessage then
print("ERROR: Farmer " .. id .. " has no fuel!")
ready = false
elseif message.type == constants.notEnoughFuelMessage then
print("Farmer " .. id .. " doesn't have enough fuel. Required fuel: " .. message.requiredFuel .. " Current fuel: " .. message.totalFuel)
ready = false
elseif message.type == constants.readyMessage then
print("Farmer " .. id .. " is ready!")
end
end
if not ready then
return
else
--Activate farmers
print("Activating all " .. farmerCount .. " farmers...")
rednet.broadcast({ type = constants.startMessage }, constants.farmProtocol)
print("Farming in progress...")
--Wait for farmers to finish
while farmerCount > 0 do
local id, message = rednet.receive(constants.farmProtocol)
if message.type == constants.finishedMessage then
farmerCount = farmerCount - 1
print("Farmer " .. id .. " finished farming!")
end
end
print("Farming completed!")
end