Advertisement
Guest User

openMiners

a guest
Mar 19th, 2016
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.21 KB | None | 0 0
  1. --#requires
  2.  
  3. local fs = require("filesystem")
  4. local serialization = require("serialization")
  5. local term = require("term")
  6. local component = require("component")
  7. local event = require("event")
  8.  
  9.  
  10. --#variables
  11. config = {}
  12. miners = {}
  13. local mineAll = false
  14. local sw = "main"
  15. local isMining = false
  16. local running = true
  17. local string_stat = ""
  18.  
  19. function main()
  20. find_peripherals()
  21. read_config()
  22. event.listen("key_down",listen)
  23. while running do
  24.     draw_main()
  25.     if isMining then
  26.         draw_stats()
  27.     end
  28. end
  29. end
  30.  
  31.  
  32.  
  33. function draw_stats()
  34.  
  35. local runcheck
  36. while isMining do
  37.     runcheck = false
  38.     string_stat = ""
  39.     for k, miner in pairs(miners) do
  40.         status, isActive, _, currentLayer, _, _ = miner.state()
  41.         string_stat = string_stat .. "Laser #" .. k .. " " .. status .. " at layer " .. currentLayer .. "\n"
  42.         runcheck = runcheck or isActive
  43.     end
  44.     string_stat = string_stat .. "[S]top"
  45.     term.clear()
  46.     term.write(string_stat)
  47.     isMining = runcheck
  48.     switch_chk()
  49.     os.sleep(1)
  50. end
  51. end
  52.  
  53. function draw_main()
  54. while not isMining and running do
  55.     term.clear()
  56.     sw = "main"
  57.     if mineAll then oq = "quarry" else oq = "ores" end
  58.     string_stat = "[T]oggle ores/quarry: " .. oq .. "\nSet layer [o]ffset: " .. config.layerOffset  .. "\n[S]tart " .. " E[x]it" -- 20, 24, 31, 45
  59.     term.write(string_stat)
  60.     os.sleep(1)
  61.     switch_chk()
  62. end
  63. end
  64.  
  65. function setOffset()
  66. term.clear()
  67. print("Set layer offset (current " .. config.layerOffset.."):")
  68. while true do
  69.     lo = tonumber(term.read())
  70.     if lo == nil or lo<0 or lo>250 then
  71.         term.write("Wrong input. Try again.")
  72.     else
  73.         config.layerOffset = lo
  74.     break
  75.     end
  76. end
  77. save_config()
  78. sw = "main"
  79. end
  80.  
  81. function toggleWork()
  82. if isMining then
  83.     term.clear()
  84.     term.write("-Stopping miners-")
  85.     for _, miner in pairs(miners) do
  86.         miner.stop()
  87.     end
  88.     isMining = false
  89.     os.sleep(0.5)
  90. else
  91.     term.clear()
  92.     term.write("-Starting miners-")
  93.     for _, miner in pairs(miners) do
  94.         miner.offset(config.layerOffset)
  95.         miner.onlyOres(not mineAll)
  96.         miner.start()
  97.     end
  98.     isMining = true
  99.     os.sleep(0.5)
  100. end
  101. sw = "main"
  102. end
  103.  
  104. function switch_chk()
  105. if sw == "toggleWork" then toggleWork()
  106. elseif sw == "toggleMineAll" and not isMining then mineAll = not mineAll
  107. elseif sw == "setOffset" and not isMining then setOffset()
  108. end
  109. end
  110.  
  111. function listen(_,_,_,code,_)
  112. if code == 31 then sw = "toggleWork"
  113. elseif code == 20 then sw = "toggleMineAll"
  114. elseif code == 24 then sw = "setOffset"
  115. elseif code == 45 and not isMining and sw == "main" then running = false
  116. end
  117. end
  118.  
  119. function create_config()
  120. config.layerOffset = 1
  121. save_config()
  122. main()
  123. end
  124.  
  125. function find_peripherals()
  126. for addr, _ in pairs(component.list("warpdriveMiningLaser")) do
  127.     table.insert(miners, component.proxy(addr))
  128. end
  129. end
  130.  
  131. function read_config()
  132. local file = io.open("/etc/openMiners.cfg","r")
  133. local c = serialization.unserialize(file:read(fs.size("/etc/openMiners.cfg")))
  134. file:close()
  135. for k,v in pairs(c) do
  136.     config[k] = v
  137. end
  138. end
  139.  
  140. function save_config()
  141. local file = io.open("/etc/openMiners.cfg","w")
  142. file:write(serialization.serialize(config,false))
  143. file:close()
  144. end
  145.  
  146.  
  147.  
  148. --#init
  149. if not fs.exists("/etc/openMiners.cfg") then
  150.     create_config()
  151. else
  152.     main()
  153. end
  154.  
  155. event.ignore("key_down",listen)
  156. term.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement