-- 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 wpath.doFlip = false local rbow,bbow local sizePath = "size.lua" if not peripheral.find("monitor") then error("A monitor is needed to use WPath.") end local reset = function() 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 end reset() local mons = {peripheral.find("monitor")} local setscales = function() for a = 1, #mons do mons[a].setTextScale(wpath.textScale) end end local wrap = function(txt,amnt) local output = {} for a = 0, #txt-1 do output[((a+amnt) % #txt)+1] = txt:sub(a+1,a+1) end return table.concat(output) end local render = function(shift,mon) 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 local txcol, bgcol for y = 1, scr_y do mon.setCursorPos(1,y) line = bow:rep(scr_x):sub(1,scr_x) local text = ("#"):rep(scr_x) if wpath.doFlip then txcol = wrap(line:reverse(), math.abs(scr_y/2-y)+shift-1) bgcol = wrap(line:reverse(), math.abs(scr_y/2-y)+shift) 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 mon.blit(text,txcol,bgcol) end end local DOITNOW = function(KILLME, KILLMENOW) local shift = 0 while true do if wpath.doFlip then shift = (shift - 1) else shift = (shift + 1) end mons = {peripheral.find("monitor")} setscales() for a = 1, #mons do render(shift, mons[a]) end sleep(wpath.delay) end end --parallel.waitForAny(checkForReset,DOITNOW) DOITNOW()