mirror of
https://github.com/LDDestroier/CC/
synced 2024-10-31 23:26:19 +00:00
Create roterm.lua
This commit is contained in:
parent
7d1cb180bf
commit
7555a48ccf
90
roterm.lua
Normal file
90
roterm.lua
Normal file
@ -0,0 +1,90 @@
|
||||
local getAPI = function(apiname, apipath, apiurl, doDoFile, doScroll)
|
||||
apipath = fs.combine(fs.getDir(shell.getRunningProgram()), apipath)
|
||||
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
|
||||
|
||||
local nfte = getAPI("NFT Extra", "nfte.lua", "https://github.com/LDDestroier/NFT-Extra/raw/master/nfte.lua", true)
|
||||
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
|
||||
)
|
Loading…
Reference in New Issue
Block a user