Add 'player-sensor/sugoma.lua'
This commit is contained in:
parent
e0434f33d3
commit
4f6434d16e
77
player-sensor/sugoma.lua
Normal file
77
player-sensor/sugoma.lua
Normal 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
|
Loading…
Reference in a new issue