Advertisement
lego11

Claymore

May 26th, 2020
1,338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- CLAYMORE FILE MANAGER (C) lego11 2020 - An ATARI GEM Product
  2. basedir = "/data"
  3. local register = {}
  4.  
  5. function clear()
  6.     term.clear()
  7.     term.setCursorPos(1, 1)
  8. end
  9.  
  10. function colore(colore) term.setTextColor(colore) end
  11. function sfondo(colore) term.setBackgroundColor(colore) end
  12.  
  13. local function drawPixelInternal(xPos, yPos)
  14.     term.setCursorPos(xPos, yPos)
  15.     term.write(" ")
  16. end
  17.  
  18. local tColourLookup = {}
  19. for n = 1,16 do
  20.     tColourLookup[string.byte("0123456789abcdef", n, n)] = 2^(n-1)
  21. end
  22.  
  23. function drawFilledBox(startX, startY, endX, endY, nColour)
  24.     if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~=
  25.         "number" or type(endY) ~= "number" or
  26.         (nColour ~= nil and type(nColour) ~= "number") then
  27.         error("Expected startX, startY, endX, endY, colour", 2)
  28.     end
  29.  
  30.     startX = math.floor(startX)
  31.     startY = math.floor(startY)
  32.     endX = math.floor(endX)
  33.     endY = math.floor(endY)
  34.  
  35.     if nColour then term.setBackgroundColor(nColour) end
  36.     if startX == endX and startY == endY then
  37.         drawPixelInternal(startX, startY)
  38.         return
  39.     end
  40.  
  41.     local minX = math.min(startX, endX)
  42.     if minX == startX then
  43.         minY = startY
  44.         maxX = endX
  45.         maxY = endY
  46.     else
  47.         minY = endY
  48.         maxX = startX
  49.         maxY = startY
  50.     end
  51.  
  52.     for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end
  53. end
  54.  
  55. e_livsup = false
  56.  
  57. function lista_dir(dir)
  58.     e_livsup = false
  59.     sfondo(colors.lightGray)
  60.     clear()
  61.     sfondo(colors.gray)
  62.     colore(colors.white)
  63.     print("                                                    ")
  64.     term.setCursorPos(1, 1)
  65.     term.write(dir .. " - Claymore")
  66.     term.setCursorPos(49, 1)
  67.     sfondo(colors.lightBlue)
  68.     term.write("?")
  69.     term.setCursorPos(51, 1)
  70.     sfondo(colors.red)
  71.     term.write("X")
  72.  
  73.  
  74.     local tab_f = fs.list(dir)
  75.     sfondo(colors.black)
  76.     local x = 2
  77.     local y = 3
  78.     if dir ~= basedir then
  79.         e_livsup = true
  80.         term.setCursorPos(x, y)
  81.         sfondo(colors.yellow)
  82.         colore(colors.red)
  83.         term.write("Liv. sup.")
  84.         x = x + 17
  85.     end
  86.     for key, value in pairs(tab_f) do
  87.         for i=x, x+#value do
  88.             register[tostring(i).." "..tostring(y)] = dir .. "/" .. value
  89.         end
  90.         if fs.isDir(dir .. "/" .. value .. "/") == true then
  91.             term.setCursorPos(x, y)
  92.             sfondo(colors.lime)
  93.             colore(colors.black)
  94.             x = x + 17
  95.             term.write(value)
  96.         else
  97.             term.setCursorPos(x, y)
  98.             sfondo(colors.lightBlue)
  99.             colore(colors.black)
  100.             x = x + 17
  101.             term.write(value)
  102.         end
  103.         if x > 45 then
  104.             x = 2
  105.             y = y + 2
  106.         end
  107.     end
  108. end
  109.  
  110. local dir = basedir
  111. local prevdir = basedir
  112.  
  113. while true do
  114.     lista_dir(dir)
  115.     local event, par1, par2, par3 = os.pullEvent()
  116.     if event == "mouse_click" then
  117.       if par3 == 1 and par2 == 51 then
  118.         sfondo(colors.black)
  119.         colore(colors.white)
  120.         clear()
  121.         break
  122.       elseif par3 == 1 and par2 == 49 then
  123.         drawFilledBox(12, 5, 39, 15, colors.white)
  124.         term.setCursorPos(12, 5)
  125.         sfondo(colors.gray)
  126.         colore(colors.white)
  127.         term.write("A proposito di Claymore    ")
  128.         sfondo(colors.red)
  129.         term.setCursorPos(39, 5)
  130.         term.write("X")
  131.         colore(colors.black)
  132.         sfondo(colors.white)
  133.         term.setCursorPos(13, 7)
  134.         term.write("Copyright (C) 2020 lego11")
  135.         term.setCursorPos(13, 8)
  136.         term.write("Sole Microsistemi S.p.A.")
  137.         term.setCursorPos(13, 9)
  138.         term.write("Tutti i diritti riservati")
  139.         colore(colors.red)
  140.         term.setCursorPos(13, 10)
  141.         term.write("Alba gu brร th!")
  142.         colore(colors.black)
  143.         term.setCursorPos(13, 12)
  144.         term.write("      [")
  145.         term.setCursorPos(13, 13)
  146.         term.write("@====[{::::::::::::::::::>")
  147.         term.setCursorPos(13, 14)
  148.         term.write("      [")
  149.         while true do
  150.             local event, par1, par2, par3 = os.pullEvent()
  151.             if event == "key" and par1 == 28 then
  152.                 break
  153.             elseif event == "mouse_click" and par3 == 5 and par2 == 39 then
  154.                 break
  155.             end
  156.         end
  157.       elseif e_livsup == true and par3 == 3 and par2 < 17 and par2 > 2 then
  158.         dir = string.match(dir, "^(.*)/")
  159.       else
  160.         if register[tostring(par2).." "..tostring(par3)] ~= nil then
  161.           if fs.isDir(dir .. "/" .. register[tostring(par2).." "..tostring(par3)]) == true then
  162.             print(dir .. "/" .. register[tostring(par2).." "..tostring(par3)])
  163.             sleep(0.1)
  164.             dir = register[tostring(par2).." "..tostring(par3)]
  165.           end
  166.         end
  167.       end
  168.     end
  169. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement