fugitiveplatypus

Gassy.lua

Jun 23rd, 2013
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.54 KB | None | 0 0
  1. write("Loading Gassy module... ")
  2.  
  3. Gassy = {}
  4. Gassy.ender = nil
  5. Gassy.level = 0
  6. Gassy.waypoints = {{0, 0, 0, 0}}
  7. Gassy.dir = 0
  8. Gassy.x = 0
  9. Gassy.y = 0
  10. Gassy.z = 0
  11.  
  12.  
  13. function Gassy.dump()
  14.         print("Gassy stats:")
  15.         print("\tFuel: "..turtle.getFuelLevel().." ("..Gassy.level..")")
  16.         print("\tPos: ("..Gassy.x..", "..Gassy.y..", "..Gassy.z..")")
  17.         print("\tDir: "..Gassy.dir)
  18.         print("\tWaypoints:")
  19.         local max = table.getn(Gassy.waypoints)
  20.         for i=1, max do
  21.                 local list = Gassy.waypoints[i]
  22.                 print("\t\t("..list[1]..", "..list[2]..", "..list[3]..")")
  23.         end
  24. end
  25.  
  26. function Gassy.init(num)
  27.         Gassy.ender = Enderage.new(Enderage, num, num)
  28.         Gassy.fuel()
  29. end
  30.  
  31. function Gassy.fuel()
  32.         if turtle.getFuelLevel() <= 5120 then
  33.                 Gassy.ender.prepare(Gassy.ender)
  34.  
  35.                 while turtle.getFuelLevel() <= 5120 do
  36.                         sleep(0)
  37.                         Gassy.ender.pull(Gassy.ender)
  38.                         turtle.refuel()
  39.                 end
  40.                 Gassy.ender.clean(Gassy.ender)
  41.                 print("Gassy: refueled to "..turtle.getFuelLevel())
  42.         end
  43.         Gassy.level = turtle.getFuelLevel()
  44. end
  45.  
  46. function Gassy.turn(s)
  47.         local diff = (Gassy.dir - s) % 4
  48.  
  49.         if diff == 0 then
  50.                 return
  51.         end
  52.  
  53.         if diff == 1 then
  54.                 turtle.turnLeft()
  55.  
  56.         elseif diff == 2 then
  57.                 turtle.turnLeft()
  58.                 turtle.turnLeft()
  59.  
  60.         elseif diff == 3 then
  61.                 turtle.turnRight()
  62.  
  63.         end
  64.         Gassy.dir = s
  65. end
  66.  
  67. function Gassy.turnRight()
  68.         Gassy.turn((Gassy.dir + 1) % 4)
  69. end
  70.  
  71. function Gassy.turnLeft()
  72.         Gassy.turn((Gassy.dir - 1) % 4)
  73. end
  74.  
  75. function Gassy.forward(n)
  76.         if n == nil then
  77.                 n = 1
  78.         end
  79.  
  80.         Gassy.move(turtle.forward, n)
  81.  
  82.         if Gassy.dir % 2 == 0 then
  83.                 if Gassy.dir == 0 then
  84.                         Gassy.y = Gassy.y + n
  85.                 else
  86.                         Gassy.y = Gassy.y - n
  87.                 end
  88.         else
  89.                 if Gassy.dir == 1 then
  90.                         Gassy.x = Gassy.x + n
  91.                 else
  92.                         Gassy.x = Gassy.x - n
  93.                 end
  94.         end
  95. end
  96.  
  97. function Gassy.up(n)
  98.         if n == nil then
  99.                 n = 1
  100.         end
  101.  
  102.         Gassy.move(turtle.up, n)
  103.         Gassy.z = Gassy.z + n
  104. end
  105.  
  106. function Gassy.down(n)
  107.         if n == nil then
  108.                 n = 1
  109.         end
  110.  
  111.         Gassy.move(turtle.down, n)
  112.         Gassy.z = Gassy.z - n
  113. end
  114.  
  115. function Gassy.move(func, n)
  116.         if Gassy.level <= 5120 then
  117.                 Gassy.fuel()
  118.         end
  119.  
  120.         for i=1, n do
  121.                 while not func() do
  122.                         Panic.panic("Path is blocked!")
  123.                 end
  124.                 Gassy.level = Gassy.level - 1
  125.         end
  126. end
  127.  
  128. function Gassy.go(x, y, z)
  129.  
  130.         print("Going to ("..x..", "..y..", "..z..")")
  131.  
  132.         if Gassy.x - x > 0 then
  133.                 Gassy.turn(3)
  134.                 Gassy.forward(Gassy.x - x)
  135.         elseif Gassy.x - x < 0 then
  136.                 Gassy.turn(1)
  137.                 Gassy.forward(x - Gassy.x)
  138.         end
  139.  
  140.         if Gassy.y - y > 0 then
  141.                 Gassy.turn(2)
  142.                 Gassy.forward(Gassy.y - y)
  143.         elseif Gassy.y - y < 0 then
  144.                 Gassy.turn(0)
  145.                 Gassy.forward(y - Gassy.y)
  146.         end
  147.  
  148.         if Gassy.z - z > 0 then
  149.                 Gassy.down(Gassy.z - z)
  150.         elseif Gassy.z - z < 0 then
  151.                 Gassy.up(z - Gassy.z)
  152.         end
  153. end
  154.  
  155. function Gassy.home()
  156.         while Gassy.pop() do
  157.                 sleep(0)
  158.         end
  159.         Gassy.go_point()
  160. end
  161.  
  162. function Gassy.pop()
  163.         local max = table.getn(Gassy.waypoints)
  164.  
  165.         if max > 1 then
  166.                 local list = Gassy.waypoints[max]
  167.                 Gassy.x = Gassy.x + list[1]
  168.                 Gassy.y = Gassy.y + list[2]
  169.                 Gassy.z = Gassy.z + list[3]
  170.                 Gassy.dir = (Gassy.dir + list[4]) % 4
  171.                 table.remove(Gassy.waypoints)
  172.                 return true
  173.         end
  174.         return false
  175. end
  176.  
  177. function Gassy.push()
  178.         table.insert(Gassy.waypoints, {Gassy.x, Gassy.y, Gassy.z, Gassy.dir})
  179.         Gassy.x = 0
  180.         Gassy.y = 0
  181.         Gassy.z = 0
  182.         Gassy.dir = 0
  183. end
  184.  
  185. function Gassy.go_point()
  186.         Gassy.go(0, 0, 0)
  187.         Gassy.turn(0)
  188. end
  189.  
  190. print("Done.")
Advertisement
Add Comment
Please, Sign In to add comment