Bigterm slideshow, etc
This commit is contained in:
parent
1e4fa997c0
commit
4922c5550f
32
bigterm.lua
32
bigterm.lua
|
@ -196,17 +196,29 @@ local BigTerm = {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return function(monitors, args)
|
local lib = {}
|
||||||
|
function lib.fromFile(conf)
|
||||||
|
local fp = assert(io.open(conf, "r"))
|
||||||
|
local conf = textutils.unserializeJSON(fp:read("a"))
|
||||||
|
fp:close()
|
||||||
|
local monitors = {}
|
||||||
|
for addr, pos in pairs(conf.monitors) do
|
||||||
|
local p = assert(peripheral.wrap(addr))
|
||||||
|
table.insert(monitors, { p = p, x = pos.x, y = pos.y })
|
||||||
|
end
|
||||||
|
return lib.new(monitors, { palette = conf.palette, scale = conf.scale })
|
||||||
|
end
|
||||||
|
function lib.new(monitors, args)
|
||||||
args = args or {}
|
args = args or {}
|
||||||
local mon = setmetatable({
|
local mon = setmetatable({
|
||||||
_monitors = monitors,
|
_monitors = monitors,
|
||||||
_pos = { x = 1, y = 1 },
|
_pos = { x = 1, y = 1 },
|
||||||
_blink = false,
|
_blink = false,
|
||||||
_colorForeground = colors.white,
|
_colorForeground = colors.white,
|
||||||
_colorBackground = colors.black,
|
_colorBackground = colors.black,
|
||||||
_scale = args.scale or 1.0,
|
_scale = args.scale or 1.0,
|
||||||
_palette = args.palette or {},
|
_palette = args.palette or {},
|
||||||
}, { __index = BigTerm })
|
}, { __index = BigTerm })
|
||||||
for name, method in pairs(BigTerm) do
|
for name, method in pairs(BigTerm) do
|
||||||
if type(method) == "function" then
|
if type(method) == "function" then
|
||||||
mon[name] = function(...) return method(mon, ...) end
|
mon[name] = function(...) return method(mon, ...) end
|
||||||
|
@ -215,3 +227,5 @@ return function(monitors, args)
|
||||||
mon._reset()
|
mon._reset()
|
||||||
return mon
|
return mon
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return lib
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
local args = { ... }
|
||||||
|
local ccpi = require("ccpi")
|
||||||
|
local bigterm = require("bigterm").fromFile("/bigterm.json")
|
||||||
|
|
||||||
|
local img, err = ccpi.load(args[1])
|
||||||
|
if not img then
|
||||||
|
printError(err)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local ys = {}
|
||||||
|
for y = 1, img.h do table.insert(ys, y) end
|
||||||
|
|
||||||
|
for i = 1, math.floor((#ys) / 2), 2 do
|
||||||
|
local a, b = i, (#ys - 1) - i + 1
|
||||||
|
ys[a], ys[b] = ys[b], ys[a]
|
||||||
|
end
|
||||||
|
|
||||||
|
for i, y in ipairs(ys) do
|
||||||
|
bigterm.setCursorPos(1, y)
|
||||||
|
bigterm.blit(img.lines[y].s, img.lines[y].fg, img.lines[y].bg)
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, 16 do
|
||||||
|
bigterm.setPaletteColor(bit.blshift(1, i - 1), img.palette[i])
|
||||||
|
end
|
|
@ -0,0 +1,47 @@
|
||||||
|
local args = { ... }
|
||||||
|
local ccpi = require("ccpi")
|
||||||
|
local bigterm = require("bigterm")
|
||||||
|
|
||||||
|
local conf_path = "/bigterm.json"
|
||||||
|
if args[1] == "-c" then
|
||||||
|
table.remove(args, 1)
|
||||||
|
conf_path = table.remove(args, 1)
|
||||||
|
end
|
||||||
|
local screen = bigterm.fromFile(conf_path)
|
||||||
|
|
||||||
|
local time = 10
|
||||||
|
if args[1] == "-t" then
|
||||||
|
table.remove(args, 1)
|
||||||
|
time = tonumber(table.remove(args, 1))
|
||||||
|
end
|
||||||
|
|
||||||
|
local files = fs.list(args[1])
|
||||||
|
|
||||||
|
while true do
|
||||||
|
local img, err = ccpi.load(fs.combine(args[1], files[math.random(1, #files)]))
|
||||||
|
if not img then
|
||||||
|
printError(err)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
local ys = {}
|
||||||
|
for y = 1, img.h do table.insert(ys, y) end
|
||||||
|
|
||||||
|
for i = 1, math.floor((#ys) / 2), 2 do
|
||||||
|
local a, b = i, (#ys - 1) - i + 1
|
||||||
|
ys[a], ys[b] = ys[b], ys[a]
|
||||||
|
end
|
||||||
|
|
||||||
|
for i, y in ipairs(ys) do
|
||||||
|
screen.setCursorPos(1, y)
|
||||||
|
screen.blit(img.lines[y].s, img.lines[y].fg, img.lines[y].bg)
|
||||||
|
if (i % 10) == 0 then
|
||||||
|
os.sleep(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, 16 do
|
||||||
|
screen.setPaletteColor(bit.blshift(1, i - 1), img.palette[i])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
os.sleep(time)
|
||||||
|
end
|
Loading…
Reference in New Issue