Advertisement
Guest User

load

a guest
Aug 27th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.04 KB | None | 0 0
  1. local file = "abc.nft"
  2.  
  3.  
  4.  
  5.  
  6. local frames = {}
  7. local function getColourOf(hex)
  8.   local value = tonumber(hex, 16)
  9.   if not value then return nil end
  10.   value = math.pow(2, value)
  11.   return value
  12. end
  13.  
  14. local function loadNFT(path)
  15.         sFrame = 1
  16.         frames[sFrame] = { }
  17.         frames[sFrame].text = { }
  18.         frames[sFrame].textcol = { }
  19.        
  20.         if fs.exists(path) then
  21.                 local file = io.open(path, "r")
  22.                 local sLine = file:read()
  23.                 local num = 1
  24.                 while sLine do
  25.                         table.insert(frames[sFrame], num, {})
  26.                         table.insert(frames[sFrame].text, num, {})
  27.                         table.insert(frames[sFrame].textcol, num, {})
  28.                        
  29.                         --As we're no longer 1-1, we keep track of what index to write to
  30.                         local writeIndex = 1
  31.                         --Tells us if we've hit a 30 or 31 (BG and FG respectively)- next char specifies the curr colour
  32.                         local bgNext, fgNext = false, false
  33.                         --The current background and foreground colours
  34.                         local currBG, currFG = nil,nil
  35.                         term.setCursorPos(1,1)
  36.                         for i=1,#sLine do
  37.                                 local nextChar = string.sub(sLine, i, i)
  38.                                 if nextChar:byte() == 30 then
  39.                                         bgNext = true
  40.                                 elseif nextChar:byte() == 31 then
  41.                                         fgNext = true
  42.                                 elseif bgNext then
  43.                                         currBG = getColourOf(nextChar)
  44.                                         bgNext = false
  45.                                 elseif fgNext then
  46.                                         currFG = getColourOf(nextChar)
  47.                                         fgNext = false
  48.                                 else
  49.                                         if nextChar ~= " " and currFG == nil then
  50.                                                 currFG = colours.white
  51.                                         end
  52.                                         frames[sFrame][num][writeIndex] = currBG
  53.                                         frames[sFrame].textcol[num][writeIndex] = currFG
  54.                                         frames[sFrame].text[num][writeIndex] = nextChar
  55.                                         writeIndex = writeIndex + 1
  56.                                 end
  57.                         end
  58.                         num = num+1
  59.                         sLine = file:read()
  60.                 end
  61.                 file:close()
  62.         end
  63. end
  64.  
  65. loadNFT(file)
  66. term.clear()
  67. term.setCursorPos(1,1)
  68. for k, v in pairs(frames[1]) do
  69.     if tonumber(k) then
  70.         local n = 1
  71.         repeat
  72.             term.setBackgroundColor(frames[1][k][n])
  73.             term.setTextColor(frames[1]["textcol"][k][n])
  74.             write(frames[1]["text"][k][n])
  75.             n = n+1
  76.         until not frames[1][k][n+1]
  77.     end
  78.     write("\n")
  79. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement