2019-04-18 22:18:24 +00:00
|
|
|
local getAPI = function(apiname, apipath, apiurl, doDoFile, doScroll)
|
2019-04-18 22:19:42 +00:00
|
|
|
apipath = fs.combine(".roterm-api", apipath)
|
2019-04-18 22:18:24 +00:00
|
|
|
if (not fs.exists(apipath)) then
|
|
|
|
if doScroll then term.scroll(1) end
|
|
|
|
print(apiname .. " API not found! Downloading...")
|
|
|
|
local prog = http.get(apiurl)
|
|
|
|
if not prog then
|
|
|
|
if doScroll then term.scroll(1) end
|
|
|
|
error("Failed to download " .. apiname .. " API. Abort.")
|
|
|
|
term.setCursorPos(1,1)
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local file = fs.open(apipath,"w")
|
|
|
|
file.write(prog.readAll())
|
|
|
|
file.close()
|
|
|
|
end
|
|
|
|
if doDoFile then
|
|
|
|
return dofile(apipath)
|
|
|
|
else
|
|
|
|
os.loadAPI(apipath)
|
|
|
|
end
|
|
|
|
if not _ENV[fs.getName(apipath)] then
|
|
|
|
if doScroll then term.scroll(1) end
|
|
|
|
error("Failed to load " .. apiname .. " API. Abort.")
|
|
|
|
term.setCursorPos(1,1)
|
|
|
|
return
|
|
|
|
else
|
|
|
|
return _ENV[fs.getName(apipath)]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-04-18 22:19:42 +00:00
|
|
|
local nfte = getAPI("NFT Extra", "nfte.lua", "https://github.com/LDDestroier/NFT-Extra/raw/master/nfte.lua", true)
|
2019-04-18 22:18:24 +00:00
|
|
|
local lddterm = getAPI("LDDTerm", "lddterm.lua", "https://github.com/LDDestroier/CC/raw/master/lddterm-cc.lua", true)
|
|
|
|
|
|
|
|
local scr_x, scr_y = term.getSize()
|
|
|
|
|
|
|
|
lddterm.alwaysRender = false
|
|
|
|
lddterm.baseTerm = term.current()
|
|
|
|
local win = lddterm.newWindow(scr_x, scr_y, 1, 1)
|
|
|
|
local t = win.handle
|
|
|
|
|
|
|
|
local angle = 0
|
|
|
|
|
|
|
|
term.redirect(t)
|
|
|
|
|
|
|
|
lddterm.transformation = function(image)
|
|
|
|
local output, adjX, adjY = nfte.rotateImage(image, math.rad(angle))
|
|
|
|
return output
|
|
|
|
end
|
|
|
|
|
|
|
|
lddterm.drawFunction = function(image, baseTerm)
|
|
|
|
baseTerm.clear()
|
|
|
|
nfte.drawImageCenter(image, nil, nil, baseTerm)
|
|
|
|
end
|
|
|
|
|
|
|
|
lddterm.cursorTransformation = function(x, y)
|
|
|
|
local originX = math.floor(scr_x / 2)
|
|
|
|
local originY = math.floor(scr_y / 2)
|
|
|
|
local ang = math.rad(angle)
|
|
|
|
return
|
|
|
|
math.floor( 0.5 + (x-originX) * math.cos(ang) - (y-originY) * math.sin(ang) ) + originX,
|
|
|
|
math.floor( 0.5 + (x-originX) * math.sin(ang) + (y-originY) * math.cos(ang) ) + originY
|
|
|
|
end
|
|
|
|
|
|
|
|
parallel.waitForAny(
|
|
|
|
function()
|
|
|
|
shell.run("/rom/programs/shell.lua")
|
|
|
|
end,
|
|
|
|
function()
|
|
|
|
local evt
|
|
|
|
local tID = os.startTimer(0.05)
|
|
|
|
while true do
|
|
|
|
evt = {os.pullEvent()}
|
|
|
|
if evt[1] == "key" then
|
|
|
|
if evt[2] == keys.pageDown then
|
|
|
|
angle = (angle + 2) % 360
|
|
|
|
lddterm.render(lddterm.transformation, lddterm.drawFunction)
|
|
|
|
elseif evt[2] == keys.pageUp then
|
|
|
|
angle = (angle - 2) % 360
|
|
|
|
lddterm.render(lddterm.transformation, lddterm.drawFunction)
|
|
|
|
end
|
|
|
|
elseif evt[1] == "timer" then
|
|
|
|
if evt[2] == tID then
|
|
|
|
lddterm.render(lddterm.transformation, lddterm.drawFunction)
|
|
|
|
tID = os.startTimer(0.05)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
)
|