Add 'player-sensor/sugoma.lua'

This commit is contained in:
Jan 2021-12-25 16:01:55 +00:00
parent e0434f33d3
commit 4f6434d16e

77
player-sensor/sugoma.lua Normal file
View file

@ -0,0 +1,77 @@
-- Run this on a separate computer to display a log on an attached monitor.
-- This program expects a 6x6 monitor to be connected at the back,
-- a bell at the bottom and an ender modem at the right.
local monitor = peripheral.wrap("back")
local modem = peripheral.wrap("right")
local bell_side = "bottom"
local port = 12345
local height = 38
local messages = {}
local totalMsgs = 0
modem.open(port)
function bell()
redstone.setOutput(bell_side, true)
sleep(0.1)
redstone.setOutput(bell_side, false)
end
function clear()
monitor.clear()
monitor.setCursorPos(1, 1)
monitor.setTextScale(1)
end
function writeLine(text)
local x, y = monitor.getCursorPos()
monitor.setCursorPos(1, y + 1)
monitor.write(text)
end
function refresh()
clear()
monitor.setCursorPos(27, 1)
monitor.setTextColor(colors.blue)
monitor.write("Event log")
monitor.setTextColor(colors.white)
monitor.setCursorPos(1, 2)
if table.getn(messages) == 0 then
monitor.setCursorPos(22, height / 2)
monitor.setTextColor(colors.lightGray)
monitor.write("Nothing here yet ...")
monitor.setTextColor(colors.white)
else
for k,v in pairs(messages) do
writeLine(v)
end
monitor.setCursorPos(1, 1)
monitor.setTextColor(colors.lightGray)
monitor.write(totalMsgs.." total")
monitor.setTextColor(colors.white)
end
end
refresh()
while true do
local event, side, channel, replyChannel, message,
distance = os.pullEvent("modem_message")
table.insert(messages, message)
totalMsgs = totalMsgs + 1
while table.getn(messages) > height do
table.remove(messages, 1)
end
bell()
refresh()
end