Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("button")
- --Final: variable/method names.
- local NAME = "name"
- local QUANTITY = "quantity"
- local TILEJAR = "tilejar"
- local GETASP = "getAspects"
- local MONITORNAME = "monitor_0"
- local essentia = {}
- local jars = peripheral.getNames()
- local m = peripheral.wrap(MONITORNAME)
- local monCoord = {}
- local currEssentia
- local fillAmt = 0
- local rowsActive = true
- function sortEss(t)
- local keys = {}
- for k in pairs(t) do keys[#keys+1] = k end
- table.sort(keys)
- local i = 0
- return function()
- i = i+1
- if keys[i] then
- return keys[i], t[keys[i]]
- end
- end
- end
- function scanEssentia()
- for i,j in pairs(jars) do
- --Checks for tilejar and tilejarvoid
- if string.match(peripheral.getType(j), TILEJAR) == TILEJAR then
- jar = peripheral.call(j, GETASP)[1]
- if essentia[jar[NAME]] == nil then
- essentia[jar[NAME]] = jar[QUANTITY]
- else
- --If you have multiple jars of same type, adds them together.
- --Displays white if >64.
- essentia[jar[NAME]] = essentia[jar[NAME]] + jar[QUANTITY]
- end
- end
- end
- end
- function printEssentia()
- local x = 1
- local y = 1
- monCoord[x] = {}
- for i,j in sortEss(essentia) do
- if j<16 then
- m.setTextColor(colors.red)
- elseif j<=32 and j>=16 then
- m.setTextColor(colors.yellow)
- elseif j>32 and j<=64 then
- m.setTextColor(colors.green)
- elseif j>64 then
- m.setTextColor(colors.white)
- end
- m.setCursorPos(x,y)
- m.write(i)
- m.setCursorPos(x+13,y)
- m.write(tostring(j))
- monCoord[x][y] = i
- if y < 17 then
- y = y+1
- else
- y = 1
- x = x+17
- monCoord[x] = {}
- end
- end
- m.setTextColor(colors.white)
- end
- function getClick()
- local event,side,x,y = os.pullEvent()
- if event=="monitor_touch" then
- if not button.checkxy(x,y) then
- -- if rowsActive then
- -- fillAmt = 0
- -- print(x..":"..x-(x%17)+1)
- -- print(monCoord[x-(x%17)+1][y])
- -- currEssentia = monCoord[x-(x%17)+1][y]
- -- if currEssentia ~= nil then
- -- if essentia[currEssentia] < 64 then
- -- fillTable2()
- -- else
- -- m.clear()
- -- button.label(1,10, currEssentia.." is already full. Please choose another.")
- -- sleep(3)
- -- refresh()
- -- end
- -- end
- -- end
- end
- end
- end
- function refresh()
- button.flash("Refresh")
- m.setCursorPos(1,19)
- m.write("Refreshing...")
- essentia = {}
- scanEssentia()
- m.clear()
- printEssentia()
- button.screen()
- end
- function fillTable()
- rowsActive = true
- button.clearTable()
- button.setTable("Refresh", refresh, "", 15, 35, 19, 19)
- button.screen()
- end
- function addEss(num)
- fillAmt = fillAmt + num
- if fillAmt < 0 then fillAmt = 0 end
- if fillAmt > 64-essentia[currEssentia] then fillAmt = 64-essentia[currEssentia] end
- m.clear()
- fillTable2()
- end
- function fillEss()
- local essData = {}
- essData[1] = currEssentia
- essData[2] = fillAmt
- local sendData = ""
- sendData = textutils.serialize(essData)
- rednet.send(turtleID, sendData)
- m.clear()
- button.label(7, 10, "Waiting for aspects to finish cooking....")
- button.label(7, 12, "Don't forget to refresh the screen after")
- button.label(7, 13, "the golem is done moving the essentia.")
- rednet.receive()
- m.clear()
- fillTable()
- refresh()
- end
- function cancel()
- m.clear()
- fillTable()
- refresh()
- end
- function fillTable2()
- rowsActive = false
- button.clearTable()
- m.clear()
- button.label(7, 1, "Essentia: "..currEssentia.." contains "..essentia[currEssentia])
- button.setTable("+1", addEss, 1, 8, 18, 6,6)
- button.setTable("+5", addEss, 5, 20, 30, 6, 6)
- button.setTable("+10", addEss, 10, 32, 42, 6, 6)
- button.setTable("-1", addEss, -1, 8, 18, 8, 8)
- button.setTable("-5", addEss, -5, 20, 30, 8, 8)
- button.setTable("-10", addEss, -10, 32, 42, 8 ,8)
- button.setTable("Refill Jar", addEss, 64-essentia[currEssentia], 8, 42, 10, 10)
- button.setTable("Execute Fill Request", fillEss, "", 8, 42, 16, 18)
- button.setTable("Cancel", cancel, "", 20, 30, 12, 14)
- button.label(7, 4, "Currently Adding "..fillAmt.." "..currEssentia.." essentia.")
- button.screen()
- end
- fillTable()
- refresh()
- while true do getClick() end
Advertisement
Add Comment
Please, Sign In to add comment