Biopsy

biodesign 2.0

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