mirror of
https://github.com/20kdc/OC-KittenOS.git
synced 2024-11-15 15:08:05 +11:00
50 lines
1011 B
Lua
50 lines
1011 B
Lua
|
-- This is released into the public domain.
|
||
|
-- No warranty is provided, implied or otherwise.
|
||
|
|
||
|
-- svc-vdrslamp.lua : Virtual Redstone Lamp
|
||
|
-- Authors: 20kdc
|
||
|
|
||
|
local vdev = neo.requireAccess("x.svc.virtudev", "lamp dev")
|
||
|
|
||
|
local evr = neo.requireAccess("x.neo.pub.window", "the lamp")
|
||
|
local wnd = evr(12, 6)
|
||
|
|
||
|
local bLine = (" "):rep(12)
|
||
|
|
||
|
local function blank()
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
local total = 0
|
||
|
|
||
|
vdev.install({
|
||
|
type = "redstone",
|
||
|
address = "vdrslamp-" .. neo.pid,
|
||
|
slot = 0,
|
||
|
getWakeThreshold = blank,
|
||
|
setWakeThreshold = blank,
|
||
|
getInput = blank,
|
||
|
getOutput = function (i)
|
||
|
return total
|
||
|
end,
|
||
|
setOutput = function (i, v)
|
||
|
total = v
|
||
|
wnd.setSize(12, 6)
|
||
|
end
|
||
|
})
|
||
|
|
||
|
while true do
|
||
|
local e = {coroutine.yield()}
|
||
|
if e[1] == "x.neo.pub.window" then
|
||
|
if e[3] == "close" then
|
||
|
-- the ignorance of unregistration is deliberate
|
||
|
-- a working impl. will properly recover
|
||
|
return
|
||
|
elseif e[3] == "line" then
|
||
|
local bg = 0xFFFFFF
|
||
|
if total == 0 then bg = 0 end
|
||
|
wnd.span(1, e[4], bLine, bg, bg)
|
||
|
end
|
||
|
end
|
||
|
end
|