2019-01-20 19:16:59 +00:00
|
|
|
-- Wavey Path
|
|
|
|
-- Makes a wavey path to the right
|
|
|
|
|
|
|
|
local wpath = {}
|
|
|
|
|
|
|
|
wpath.cols = "e145d9ba26"
|
|
|
|
wpath.bwcols = "087f78"
|
|
|
|
wpath.waveLen = 3
|
|
|
|
wpath.textScale = 2.5
|
|
|
|
wpath.delay = 0.05
|
2020-02-08 05:56:44 +00:00
|
|
|
wpath.doFlip = false
|
2019-01-20 19:16:59 +00:00
|
|
|
|
|
|
|
local rbow,bbow
|
|
|
|
local sizePath = "size.lua"
|
|
|
|
|
|
|
|
if not peripheral.find("monitor") then
|
2019-01-20 19:41:04 +00:00
|
|
|
error("A monitor is needed to use WPath.")
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
local reset = function()
|
2019-01-20 19:41:04 +00:00
|
|
|
rbow,bbow = "",""
|
|
|
|
for a = 1,#wpath.cols do
|
|
|
|
rbow = rbow..wpath.cols:sub(a,a):rep(wpath.waveLen)
|
|
|
|
end
|
|
|
|
for a = 1,#wpath.bwcols do
|
|
|
|
bbow = bbow..wpath.bwcols:sub(a,a):rep(wpath.waveLen)
|
|
|
|
end
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
reset()
|
|
|
|
|
|
|
|
local mons = {peripheral.find("monitor")}
|
|
|
|
local setscales = function()
|
2019-01-20 19:41:04 +00:00
|
|
|
for a = 1, #mons do
|
|
|
|
mons[a].setTextScale(wpath.textScale)
|
|
|
|
end
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
local wrap = function(txt,amnt)
|
2019-01-20 19:41:04 +00:00
|
|
|
local output = {}
|
|
|
|
for a = 0, #txt-1 do
|
|
|
|
output[((a+amnt) % #txt)+1] = txt:sub(a+1,a+1)
|
|
|
|
end
|
|
|
|
return table.concat(output)
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
local render = function(shift,mon)
|
2019-01-20 19:41:04 +00:00
|
|
|
local line
|
|
|
|
if not mon.getSize then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local scr_x,scr_y = mon.getSize()
|
|
|
|
scr_y = scr_y + (scr_y % 2)
|
|
|
|
bow = mon.isColor() and rbow or bbow
|
2020-02-08 05:56:44 +00:00
|
|
|
local txcol, bgcol
|
2019-01-20 19:41:04 +00:00
|
|
|
for y = 1, scr_y do
|
|
|
|
mon.setCursorPos(1,y)
|
|
|
|
line = bow:rep(scr_x):sub(1,scr_x)
|
|
|
|
local text = ("#"):rep(scr_x)
|
2020-02-08 05:56:44 +00:00
|
|
|
if wpath.doFlip then
|
2020-02-08 06:02:16 +00:00
|
|
|
txcol = wrap(line:reverse(), math.abs(scr_y/2-y)+shift-1)
|
|
|
|
bgcol = wrap(line:reverse(), math.abs(scr_y/2-y)+shift)
|
2020-02-08 05:56:44 +00:00
|
|
|
else
|
|
|
|
txcol = wrap(line, -1*math.abs(y-scr_y/2)+shift-1)
|
|
|
|
bgcol = wrap(line, -1*math.abs(y-scr_y/2)+shift)
|
|
|
|
end
|
2019-01-20 19:41:04 +00:00
|
|
|
mon.blit(text,txcol,bgcol)
|
|
|
|
end
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
|
2019-01-20 19:41:04 +00:00
|
|
|
local DOITNOW = function(KILLME, KILLMENOW)
|
|
|
|
local shift = 0
|
|
|
|
while true do
|
2020-02-08 06:02:16 +00:00
|
|
|
if wpath.doFlip then
|
|
|
|
shift = (shift - 1)
|
|
|
|
else
|
|
|
|
shift = (shift + 1)
|
|
|
|
end
|
2019-01-20 19:41:04 +00:00
|
|
|
mons = {peripheral.find("monitor")}
|
|
|
|
setscales()
|
|
|
|
for a = 1, #mons do
|
2020-02-08 06:02:16 +00:00
|
|
|
render(shift, mons[a])
|
2019-01-20 19:41:04 +00:00
|
|
|
end
|
|
|
|
sleep(wpath.delay)
|
|
|
|
end
|
2019-01-20 19:16:59 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
--parallel.waitForAny(checkForReset,DOITNOW)
|
2019-01-20 19:41:04 +00:00
|
|
|
DOITNOW()
|