-
Notifications
You must be signed in to change notification settings - Fork 0
/
tank.lua
39 lines (32 loc) · 1.09 KB
/
tank.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
-- This programs sends the status of a RailCraft tank every second
-- Assumes that the RailCraft tank with a valve is behind the computer
-- and that a modem is placed on top
local tankSide = "back"
local modemSide = "top"
local updateRate = 1
-- Moving global objects to local for optimization
local peripheral = peripheral
local isPresent = peripheral.isPresent
local error = error
local rednet = rednet
local broadcast = rednet.broadcast
local sleep = sleep
-- Check peripherals are where we expect them to be
if not isPresent(tankSide) then
error("Tank is not present")
elseif not isPresent(modemSide) then
error("Modem is not present")
end
-- Setup tank and rednet
local tank = peripheral.wrap(tankSide)
local tankGetTankInfo = tank.getTankInfo
rednet.open(modemSide)
while true do
local tankInfo = tankGetTankInfo("unknown")[1]
local fluidCapacity = tankInfo.capacity
local contents = tankInfo.contents
local fluidAmount = 0
if contents then fluidAmount = contents.amount or 0 end
broadcast({type = "tank", amount = fluidAmount / fluidCapacity})
sleep(updateRate)
end