Advertisement
Kagee

double

May 7th, 2013
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. os.loadAPI("libstruct")
  2. b=libstruct
  3. a=aware
  4. args = {...}
  5.  
  6. if #args < 1 then
  7.     error("Arguments: <name>")
  8. end
  9.  
  10. t=b.load(args[1]..".3d")
  11. height=t["height"]
  12. width=t["width"]
  13. depth=t["depth"]
  14.  
  15. height=((height+1)*2)-1
  16. width=((width+1)*2)-1
  17. depth=((depth+1)*2)-1
  18.  
  19. endblock=t["endblock"]
  20. parwidth=(width %2 == 0) -- width er partall
  21. moveleft=true
  22. a.setposition("start")
  23.  
  24. function refill(r)
  25.     if r == nil  then
  26.         print("refill got r == nil")
  27.         return
  28.     end
  29.     if r == 0  then return end
  30.     if turtle.getItemCount(r) > 5 then return end
  31.     if not (endblock==16) then
  32.             turtle.select(r)
  33.             print("Looking for " .. r .. " from " .. endblock+1 .. " to 16")
  34.             for i=endblock+1,16 do
  35.                     if turtle.compareTo(i) then
  36.                          print("Found in " .. i)
  37.                             turtle.select(i)
  38.                             turtle.transferTo(r)
  39.                             free=turtle.getItemSpace(r)
  40.                 turtle.select(r)
  41.                         if free == 0 then
  42.                                 print("free == 0 ")
  43.                                 break
  44.                         end
  45.             else
  46.                 print(r .. " was not in " .. i)
  47.                     end
  48.  
  49.             end
  50.     end
  51.         if turtle.getItemCount(r) <= 5 then
  52.         print("--Sleeping while waiting for refill for slot " .. r)
  53.         while (turtle.getItemCount(r) <= 5) do
  54.                 os.sleep(15)
  55.             end
  56.     end
  57. end
  58.  
  59. function line()
  60.         print("Building line")
  61.         for d=0,depth do
  62.                 pos = a.getposition("current")
  63.                 print("Pos: h" .. pos[3]*-1 .. "-w" .. pos[1] .. "-d" .. pos[2])
  64.         block = t[math.floor((pos[3]*-1)/2)][math.floor(pos[1]/2)][math.floor(pos[2]/2)]
  65.         refill(block)
  66.         b.place(block)
  67.                 if(d<depth) then
  68.                         a.df()
  69.                 end
  70.         end
  71. end
  72.  
  73.  
  74. function turn()
  75.         if(moveleft) then
  76.                 print("Moving left")
  77.                 a.l()
  78.                 a.df()
  79.                 a.l()
  80.         else
  81.                 print("Moving right")
  82.                 a.r()
  83.                 a.df()
  84.                 a.r()
  85.         end
  86.         moveleft = not moveleft
  87. end
  88.  
  89. function layer()
  90.     print("Building layer")
  91.     for w=0,width do
  92.         line()
  93.             if(w<width) then
  94.                 turn()
  95.             end
  96.     end
  97. end
  98.  
  99. -- we build from the bottom up
  100. for h=0,height-1 do
  101.     a.dd()
  102. end
  103.  
  104. for h=0,height do
  105.     layer()
  106.     if not (h == height) then
  107.         a.du()
  108.         b.t180()
  109.         if parwidth then
  110.             if h%2 == 0 then
  111.                 turnleft=false
  112.             else
  113.                 turnleft=true  
  114.             end
  115.         else
  116.             turnleft=true
  117.         end
  118.     end
  119. end
  120.  
  121. print("Finised, going home")
  122. a.goto(a.getposition("start"))
  123. b.awarecleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement