Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- modem = require("component").modem
- redstone = require("component").redstone
- term = require("term")
- serialization = require("serialization")
- event = require("event")
- insertSortObj = require("insertSortObj")
- items = {}
- function main()
- on = true
- _, vHeight = term.getViewport()
- event.listen("key_up", handleKeyUp)
- if modem.isOpen(30) == false then
- modem.open(30)
- end
- while on do
- _, _, _, _, signal, msg = event.pull('modem')
- slots = serialization.unserialize(msg)
- items = collectUniqItems(slots)
- items = insertSortObj(items, "label")
- printItems(items)
- term.write("----------")
- os.sleep(1)
- term.setCursor(0, 0)
- end
- end
- function handleKeyUp(_, _, btn)
- if btn == 3 then
- on = false
- event.ignore("key_up", handleKeyUp)
- end
- if btn == 32 then
- redstone.setOutput(sides.west, 15)
- startTime = os.time()
- while startTime + 50 > os.time() do end
- redstone.setOutput(sides.west, 0)
- end
- if btn == 115 then
- text = serialization.serialize(items)
- file = io.open("logs/log_mining_" .. os.time(), "w")
- file:write(text)
- file:close()
- file = io.open("logs/prev_mining", "w")
- file:write(text)
- file:close()
- end
- end
- function collectUniqItems(slots)
- items = {}
- results = {}
- -- make hash table
- for k,v in pairs(slots) do
- if not items[v.label] then items[v.label] = 0 end
- items[v.label] = items[v.label] + v.size
- end
- -- back to obj
- i = 0
- for k, v in pairs(items) do
- i = i + 1
- results[i] = {label = k, size = v}
- end
- return results
- end
- function printItems(items)
- i = 0
- while i < vHeight do
- i = i + 1
- term.setCursor(1, i)
- term.clearLine()
- if items[i] then
- term.write(items[i].label)
- term.setCursor(40, i)
- term.write(items[i].size)
- end
- end
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement