Added terminal rendering.

This commit is contained in:
Andrew Lalis 2022-12-29 11:08:20 +01:00
parent 87ba71cd76
commit c6e5533e30
1 changed files with 74 additions and 1 deletions

View File

@ -10,13 +10,83 @@ local RECEIVE_CHANNEL = 101
local NODE_NAME = "TMP"
local TRANSMIT_INTERVAL = 15
local function drawScreen(online)
local w, h = term.getSize()
term.setBackgroundColor(colors.black)
term.clear()
term.setCursorPos(1, 1)
term.setBackgroundColor(colors.gray)
term.setTextColor(colors.white)
term.clearLine()
term.write("Quantum Beacon")
term.setBackgroundColor(colors.black)
term.setTextColor(colors.lightGray)
term.setCursorPos(1, 3)
term.write("Node:")
term.setCursorPos(1, 5)
term.write("Channel:")
term.setCursorPos(1, 7)
term.write("Transmit Interval:")
term.setCursorPos(1, 9)
term.write("Online Status:")
term.setTextColor(colors.white)
term.setCursorPos(20, 3)
term.write(NODE_NAME)
term.setCursorPos(20, 5)
term.write(tostring(SEND_CHANNEL))
term.setCursorPos(20, 7)
term.write(tostring(TRANSMIT_INTERVAL))
local str = nil
if online then
str = "Online"
term.setTextColor(colors.lime)
else
str = "Offline"
term.setTextColor(colors.red)
end
term.setCursorPos(20, 9)
term.write(str)
end
local function clearMessageLine()
local _, h = term.getSize()
term.setCursorPos(1, h - 1)
term.setBackgroundColor(colors.gray)
term.clearLine()
end
local function showError(msg)
clearMessageLine()
local _, h = term.getSize()
term.setCursorPos(2, h - 1)
term.setBackgroundColor(colors.gray)
term.setTextColor(colors.red)
term.write(msg)
end
local function showMessage(msg)
clearMessageLine()
local _, h = term.getSize()
term.setCursorPos(2, h - 1)
term.setBackgroundColor(colors.gray)
term.setTextColor(colors.lightBlue)
term.write(msg)
end
local function getPeripheralOrWait(name)
local p = nil
repeat
p = peripheral.find(name)
if p == nil then
print("Error: Couldn't find an attached peripheral with name \"" .. name .. "\". Attach one please.")
showError("Error: Couldn't find an attached peripheral with name \"" .. name .. "\"")
os.pullEvent("peripheral")
if p ~= nil then
showMessage("Peripheral \"" .. name .. "\" connected.")
end
end
until p ~= nil
return p
@ -29,6 +99,8 @@ local function meSystemConnected(meBridge)
return craftingCpus ~= nil and #craftingCpus > 0
end
drawScreen(false)
while true do
local modem = getPeripheralOrWait("modem")
local meBridge = getPeripheralOrWait("meBridge")
@ -38,5 +110,6 @@ while true do
online = meSystemConnected(meBridge)
}
modem.transmit(SEND_CHANNEL, RECEIVE_CHANNEL, packet)
drawScreen(packet.online)
os.sleep(TRANSMIT_INTERVAL)
end