Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- args = {...}
- if args[1] == "-p" then
- mode = "paint"
- elseif args[1] == "-nfp" then
- mode = "paint"
- elseif args[1] == "-nfa" then
- mode = "nfa"
- else
- error("Usage: "..shell.getRunningProgram().." <mode> <file or folder> <output folder>")
- end
- file = args[2]
- if file and fs.exists(file) then
- else
- error("File either was not given or does not exist")
- end
- output = args[3]
- if not output then
- error("Usage: "..shell.getRunningProgram().." <mode> <file or folder> <output folder>")
- end
- scrx,scry = term.getSize()
- resX,resY = 0,0
- numFrames = 0
- if mode == "paint" then
- if not fs.isDir("/"..file) then
- error(file.." is a file.")
- end
- fs.makeDir("/"..output)
- for k,v in pairs(fs.list("/"..file)) do
- f = fs.open("/"..file.."/"..v,"r")
- numFrames = numFrames+1
- cLine = true
- numLines = 0
- while cLine do
- cLine = f.readLine()
- os.queueEvent("Yield_")
- os.pullEvent("Yield_")
- if cLine then
- numLines = numLines+1
- if #cLine > resX then
- resX = #cLine
- end
- end
- end
- f.close()
- if numLines > resY then
- resY = numLines
- end
- end
- print("Found stats.")
- res = fs.open("/"..output.."/resolution","w")
- res.write(tostring(resX).."\n"..tostring(resY))
- res.close()
- bgFile = fs.open("/"..output.."/bg","w")
- colorFile = fs.open("/"..output.."/color","w")
- textFile = fs.open("/"..output.."/text","w")
- for i = 1, numFrames-1 do
- for a = 1, resY do
- textFile.write(string.rep(" ",resX).."\n")
- colorFile.write(string.rep("0",resX).."\n")
- end
- os.queueEvent("Yield_")
- os.pullEvent("Yield_")
- end
- textFile.write(string.rep(" ",resX))
- colorFile.write(string.rep("0",resX))
- textFile.close()
- colorFile.close()
- print("Wrote text.")
- print("Wrote text color.")
- frameNumber = 0
- for k,v in pairs(fs.list("/"..file)) do
- frameNumber = frameNumber+1
- f = fs.open("/"..file.."/"..v,"r")
- curFrame = ""
- curLine = true
- lineNumber = 0
- while curLine do
- lineNumber = lineNumber +1
- curLine = f.readLine()
- if curLine then
- if lineNumber ~= 1 then
- curFrame = curFrame.."\n"
- end
- curLine = curLine:gsub(" ","f")
- curLine = curLine..string.rep("f",resX-#curLine)
- curFrame = curFrame..curLine
- end
- end
- for a = lineNumber,resY do
- curLine = string.rep("f",resX)
- curFrame = curFrame.."\n"..curLine
- end
- if frameNumber ~= 1 then
- bgFile.write("\n")
- end
- bgFile.write(curFrame)
- os.queueEvent("Yield_")
- os.pullEvent("Yield_")
- end
- print("Wrote background color.")
- bgFile.close()
- elseif mode == "nfa" then
- fs.makeDir("/"..output)
- f = fs.open("/"..file,"r")
- curLine = true
- numLines = 0
- numFrames = 1
- while curLine do
- curLine = f.readLine()
- if curLine then
- if #curLine > resX then
- resX = #curLine
- end
- end
- if curLine == "~" and resY == 0 then
- resY = numLines
- end
- if curLine == "~" then
- numFrames = numFrames+1
- end
- numLines = numLines+1
- end
- f.close()
- f = fs.open("/"..output.."/resolution","w")
- f.write(tostring(resX).."\n"..tostring(resY))
- f.close()
- bgFile = fs.open("/"..output.."/bg","w")
- colorFile = fs.open("/"..output.."/color","w")
- textFile = fs.open("/"..output.."/text","w")
- for i = 1, numFrames-1 do
- for a = 1, resY do
- textFile.write(string.rep(" ",resX).."\n")
- colorFile.write(string.rep("0",resX).."\n")
- end
- os.queueEvent("Yield_")
- os.pullEvent("Yield_")
- end
- textFile.write(string.rep(" ",resX))
- colorFile.write(string.rep("0",resX))
- textFile.close()
- colorFile.close()
- print("Wrote text.")
- print("Wrote text color.")
- f = fs.open("/"..file,"r")
- curLine = true
- lineNumber = 0
- frames = ""
- while curLine do
- curLine = f.readLine()
- lineNumber = lineNumber+1
- if curLine and curLine ~= "~" then
- if lineNumber > 1 then
- frames = frames.."\n"
- --12f
- --2ff
- --fff
- --<\n>
- --123
- --23f
- --3ff
- end
- curLine = curLine:gsub(" ","f")
- curLine = curLine..string.rep("f",resX-#curLine)
- frames = frames..curLine
- end
- end
- bgFile.write(frames)
- print("Wrote background color.")
- bgFile.close()
- end
Advertisement
Add Comment
Please, Sign In to add comment