Advertisement
Guest User

miningClient.lua

a guest
Aug 22nd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.82 KB | None | 0 0
  1.  
  2. modem = require("component").modem
  3. redstone = require("component").redstone
  4. term = require("term")
  5. serialization = require("serialization")
  6. event = require("event")
  7. insertSortObj = require("insertSortObj")
  8.  
  9.  
  10. items = {}
  11.  
  12. function main()
  13.  
  14.   on = true
  15.   _, vHeight = term.getViewport()
  16.  
  17.   event.listen("key_up", handleKeyUp)
  18.  
  19.   if modem.isOpen(30) == false then
  20.     modem.open(30)
  21.   end
  22.  
  23.   while on do
  24.  
  25.  
  26.     _, _, _, _, signal, msg = event.pull('modem')
  27.  
  28.  
  29.     slots = serialization.unserialize(msg)
  30.  
  31.     items = collectUniqItems(slots)
  32.  
  33.     items = insertSortObj(items, "label")
  34.  
  35.     printItems(items)
  36.  
  37.  
  38.     term.write("----------")
  39.     os.sleep(1)
  40.     term.setCursor(0, 0)
  41.  
  42.  
  43.   end
  44.  
  45. end
  46.  
  47. function handleKeyUp(_, _, btn)
  48.  
  49.   if btn == 3 then
  50.  
  51.     on = false
  52.     event.ignore("key_up", handleKeyUp)
  53.   end
  54.  
  55.   if btn == 32 then
  56.  
  57.     redstone.setOutput(sides.west, 15)
  58.  
  59.     startTime = os.time()
  60.  
  61.     while startTime + 50 > os.time() do end
  62.  
  63.     redstone.setOutput(sides.west, 0)
  64.  
  65.   end
  66.  
  67.   if btn == 115 then
  68.  
  69.     text = serialization.serialize(items)
  70.     file = io.open("logs/log_mining_" .. os.time(), "w")
  71.     file:write(text)
  72.     file:close()
  73.  
  74.     file = io.open("logs/prev_mining", "w")
  75.     file:write(text)
  76.     file:close()
  77.   end
  78.  
  79. end
  80.  
  81. function collectUniqItems(slots)
  82.  
  83.   items = {}
  84.   results = {}
  85.  
  86.   -- make hash table
  87.   for k,v in pairs(slots) do
  88.  
  89.     if not items[v.label] then items[v.label] = 0 end
  90.  
  91.     items[v.label] = items[v.label] + v.size
  92.   end
  93.  
  94.  
  95.   -- back to obj
  96.   i = 0
  97.  
  98.   for k, v in pairs(items) do
  99.  
  100.     i = i + 1
  101.     results[i] = {label = k, size = v}
  102.   end
  103.  
  104.  
  105.   return results
  106. end
  107.  
  108. function printItems(items)
  109.   i = 0
  110.  
  111.   while i < vHeight do
  112.  
  113.     i = i + 1
  114.  
  115.     term.setCursor(1, i)
  116.     term.clearLine()
  117.  
  118.     if items[i] then
  119.       term.write(items[i].label)
  120.       term.setCursor(40, i)
  121.       term.write(items[i].size)
  122.     end
  123.  
  124.  
  125.   end
  126. end
  127.  
  128.  
  129. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement