mirror of
				https://github.com/LDDestroier/CC/
				synced 2025-10-31 07:22:59 +00:00 
			
		
		
		
	Create roterm.lua
This commit is contained in:
		
							
								
								
									
										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 | ||||||
|  | ) | ||||||
		Reference in New Issue
	
	Block a user
	 LDDestroier
					LDDestroier