Advertisement
shirkit

design

May 15th, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.08 KB | None | 0 0
  1. os.loadAPI("utils")
  2. os.loadAPI("matrix")
  3.  
  4. local tArgs = { ... }
  5. designname = tArgs[1]
  6.  
  7. local w, h = term.getSize()
  8.  
  9. function getkey()
  10.   event, param = os.pullEvent("key")
  11.   return param
  12. end
  13.  
  14. function screeninit()
  15.   term.clear()
  16.   term.setCursorPos(1,1)
  17. end
  18.  
  19. function loadlayerfile(project, layernumber)
  20.   var = (utils.varfromfile((project.."/"..project..layernumber)))
  21.   if var ~= nil then
  22.     return var
  23.   else
  24.     return matrix.create()
  25.   end
  26. end
  27.  
  28. function savelayerfile(project, layernumber, layer)
  29.   if(fs.exists(project) ~= true) then
  30.     fs.makeDir(project)
  31.   end
  32.   utils.vartofile(layer, (project.."/"..project..layernumber))
  33. end
  34.  
  35. function setletterat(x, y, letter)
  36.   term.setCursorPos(x, y)
  37.   term.write(""..letter)
  38. end
  39.  
  40. function drawhud(layerno, x, y)
  41.   sx, sy = term.getCursorPos()
  42.   setletterat(1, 2, "L")
  43.   setletterat(1, 3, layerno)
  44.   setletterat(1, 5, "X")
  45.   setletterat(1, 6, x)
  46.   setletterat(1, 8, "Y")
  47.   setletterat(1, 9, y)
  48.   for i=1, h-1 do
  49.     setletterat(3, i, "|")
  50.   end
  51.   term.setCursorPos(sx,sy)
  52. end
  53.  
  54. function drawlayer(layer)
  55.   sx, sy = term.getCursorPos()
  56.   for i=1, w-1 do
  57.     for j=1, h+1 do
  58.       value = matrix.get(layer, i, j)
  59.       if(value ~= nil) then
  60.         setletterat(i+3, j, math.floor(value))
  61.       end
  62.     end
  63.   end
  64.   term.setCursorPos(sx, sy)
  65. end
  66.  
  67. function edit(filename)
  68.   layerlevel = 0
  69.   layer = loadlayerfile(filename, layerlevel)
  70.   layercopy = nil
  71.   term.setCursorPos(4,1)
  72.  
  73.   while true do
  74.     term.clear()
  75.     curx, cury = term.getCursorPos()
  76.     drawhud(layerlevel,curx-3, cury)
  77.     drawlayer(layer)
  78.     term.setCursorBlink(true)
  79.     input = getkey()
  80.     term.setCursorBlink(false)    
  81.  
  82.     if (input == 16) then  -- q key
  83.       savelayerfile(filename, layerlevel, layer)
  84.         sleep(.5)
  85.       screeninit()
  86.       break
  87.     elseif (input == 30) then  -- a key
  88.       savelayerfile(filename, layerlevel, layer)
  89.       layerlevel = layerlevel + 1
  90.       layer = loadlayerfile(filename, layerlevel)
  91.     elseif (input == 44) then  -- z key
  92.       if(layerlevel > 0) then
  93.         savelayerfile(filename, layerlevel, layer)
  94.         layerlevel = layerlevel - 1
  95.         layer = loadlayerfile(filename, layerlevel)
  96.       end
  97.     elseif (input == 200) then  -- up arrow
  98.         if(cury > 1) then
  99.         cury = cury - 1
  100.       end
  101.       elseif (input == 208) then  -- down arrow
  102.         if(cury < h-6) then
  103.         cury = cury + 1
  104.       end
  105.       elseif (input == 203) then  -- left arrow
  106.         if(curx > 4) then
  107.         curx = curx - 1
  108.       end
  109.       elseif (input == 205) then  -- right arrow
  110.         if(curx < w-15) then
  111.         curx = curx + 1
  112.       end
  113.       elseif (input == 46) then  -- c key
  114.         layercopy = utils.copytable(layer)
  115.       elseif (input == 25) then  -- p key
  116.         if (layercopy ~= nil) then
  117.         layer = utils.copytable(layercopy)
  118.       end
  119.     elseif (input == 57) then -- spacebar
  120.         matrix.remove(layer, (curx-3), cury)
  121.       elseif ((input >= 2) and (input <= 10)) then
  122.         matrix.set(layer, (curx-3), cury, (input-1))
  123.       end  
  124.     term.setCursorPos(curx, cury)
  125.   end  
  126. end
  127.  
  128. edit(designname)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement