119 lines
3.4 KiB
Lua
119 lines
3.4 KiB
Lua
-- vi: ft=lua
|
|
|
|
local hostname = "pocket_computer" .. os.getComputerID()
|
|
|
|
redstone_toggle_id = 50
|
|
de_store_mon_id = 45
|
|
|
|
function dump(o)
|
|
if o == nil then
|
|
return ""
|
|
end
|
|
|
|
if type(o) == 'table' then
|
|
local s = '{ '
|
|
for k,v in pairs(o) do
|
|
if type(k) ~= 'number' then k = '"'..k..'"' end
|
|
s = s .. '['..k..'] = ' .. dump(v) .. ','
|
|
end
|
|
return s .. '} '
|
|
end
|
|
|
|
return tostring(o)
|
|
end
|
|
|
|
function poll()
|
|
while true do
|
|
if redstone_toggle_id ~= nil then
|
|
rednet.send(redstone_toggle_id, "get_state")
|
|
end
|
|
if de_store_mon_id ~= nil then
|
|
rednet.send(de_store_mon_id, "get_stats")
|
|
end
|
|
sleep(1)
|
|
end
|
|
end
|
|
|
|
function recv()
|
|
local redstone_toggle_state
|
|
local de_store_energy_stored, de_store_max_energy_stored, de_store_transfer_per_tick
|
|
local updated = false
|
|
while true do
|
|
local id, data = rednet.receive()
|
|
if id == redstone_toggle_id then
|
|
if type(data) == 'table' then
|
|
if data[1] == 'output_state' then
|
|
redstone_toggle_state = data[2]
|
|
updated = true
|
|
end
|
|
end
|
|
elseif id == de_store_mon_id then
|
|
if type(data) == 'table' then
|
|
if data[1] == 'energyStored' then
|
|
de_store_energy_stored = data[2]
|
|
end
|
|
if data[3] == 'maxEnergyStored' then
|
|
de_store_max_energy_stored = data[4]
|
|
end
|
|
if data[5] == 'transferPerTick' then
|
|
de_store_transfer_per_tick = data[6]
|
|
end
|
|
updated = true
|
|
end
|
|
end
|
|
|
|
if updated == true then
|
|
term.clear()
|
|
term.setCursorPos(1, 1)
|
|
term.setTextColor(colors.white)
|
|
term.setBackgroundColor(colors.black)
|
|
write('Press "T" to toggle the rainbows.\n')
|
|
term.write('Rainbows state: ')
|
|
if redstone_toggle_state == true then
|
|
term.setBackgroundColor(colors.green)
|
|
write('On\n')
|
|
elseif redstone_toggle_state == false then
|
|
term.setBackgroundColor(colors.red)
|
|
write('Off\n')
|
|
elseif redstone_toggle_state == nil then
|
|
term.setBackgroundColor(colors.purple)
|
|
write('Unknown\n')
|
|
end
|
|
term.setBackgroundColor(colors.black)
|
|
print()
|
|
print('Draconic Storage')
|
|
print('Current: ' .. de_store_energy_stored)
|
|
print('Max: ' .. de_store_max_energy_stored)
|
|
print('Transfer per Tick: ' .. de_store_transfer_per_tick)
|
|
end
|
|
end
|
|
end
|
|
|
|
function key_watcher()
|
|
while true do
|
|
local event, param = os.pullEvent("key")
|
|
if event == "key" then
|
|
-- print("Got key: " .. param)
|
|
if param == keys.backspace then
|
|
break
|
|
elseif param == keys.t then
|
|
rednet.send(redstone_toggle_id, 'toggle')
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local sides = peripheral.getNames()
|
|
for i = 1, #sides do
|
|
if peripheral.getType(sides[i]) == "modem" then
|
|
modemSide = sides[i]
|
|
break
|
|
end
|
|
end
|
|
|
|
rednet.open(modemSide)
|
|
rednet.host("rmm", hostname)
|
|
|
|
parallel.waitForAny(poll, recv, key_watcher)
|
|
rednet.close(modemSide)
|