Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --(( Settings ))--
- -- side relative to the computer
- -- or path if you are using cables
- local grindstone = peripheral.wrap("left")
- or error("Unable to wrap the grind stone!",0)
- local monitor = peripheral.wrap("top")
- or error("Unable to wrap the monitor!",0)
- -- colors
- local BG = colors.black
- local LOW = colors.red
- local MED = colors.orange
- local HIGH = colors.yellow
- local TOP = colors.lime
- -- how many times to draw per second
- local updateRate = 5
- --(( Variables ))--
- local ores = 0
- local dusts = 0
- local total = 0
- local oresPercentage = 0
- local dustsPercentage = 0
- local mW,mH = monitor.getSize()
- local tW,tH = term.getSize()
- --(( Functions ))--
- local function getAllStacks( inv )
- local t = {}
- local size = inv.getInventorySize()
- for slot = 1,size do
- local item = inv.getStackInSlot(slot) or {}
- item.rawName = item.rawName or ""
- item.qty = item.qty or 0
- item.dmg = item.dmg or 0
- item.name = item.name or ""
- item.id = item.id or 0
- t[slot] = item
- end
- return t
- end
- local function updateItems()
- local items = getAllStacks(grindstone)
- ores = 0
- dusts = 0
- total = 0
- percentage = 0
- for slot,item in pairs(items) do
- -- ores
- if slot >= 1 and slot <= 3 then
- ores = ores + item.qty
- end
- -- dusts
- if slot >= 4 and slot <= 6 then
- dusts = dusts + item.qty
- end
- end
- total = ores + dusts
- oresPercentage = ores / total
- dustsPercentage = dusts / total
- if ores == 0 then oresPercentage = 0 end
- if dusts == 0 then dustsPercentage = 0 end
- end
- local function draw()
- -- drawing a big bar over the monitor
- -- drawing from left to right
- -- black area
- monitor.setBackgroundColor(BG)
- for column = math.ceil(dustsPercentage * mW),mW,1 do
- for row = 1,mH,1 do
- monitor.setCursorPos(column,row)
- monitor.write(" ")
- end
- end
- -- colored area
- if dustsPercentage > 0 then
- -- 0% to 33%
- if dustsPercentage < 1/3 then
- monitor.setBackgroundColor(LOW)
- end
- -- 33% to 66%
- if dustsPercentage >= 1/3
- and dustsPercentage < 2/3 then
- monitor.setBackgroundColor(MED)
- end
- -- 66% to 100%
- if dustsPercentage >= 2/3
- and dustsPercentage < 1 then
- monitor.setBackgroundColor(HIGH)
- end
- -- 100%
- if dustsPercentage == 1 then
- monitor.setBackgroundColor(TOP)
- end
- end
- for column = 1,math.floor(dustsPercentage * mW),1 do
- for row = 1,mH,1 do
- monitor.setCursorPos(column,row)
- monitor.write(" ")
- end
- end
- -- on screen info
- term.clear()
- local ore = "ore" if ores > 1 then ore = "ores" end
- local dust = "dust" if dusts > 1 then dust = "dusts" end
- local text1 = "Currently "..ores.." "..ore.." and ".. dusts.." "..dust
- local text2 = math.floor(dustsPercentage*100).."% done"
- term.setCursorPos(tW/2-#text1/2,tH/2-1)
- term.write(text1)
- term.setCursorPos(tW/2-#text2/2,tH/2+1)
- term.write(text2)
- end
- --(( Main program ))--
- -- main loop
- while true do
- updateItems()
- draw()
- sleep(1/updateRate)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement