Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --EDIT THIS TO CHANGE POSITION OF THE THINGS
- startposx = 0
- startposy = 0
- function findObject (list, key)
- temp = false
- for _,v in pairs(list) do
- if v == key then
- temp = true
- end
- end
- return temp
- end
- --Outputs valid terminal bridge address, otherwise "none"
- function findBridge ()
- compls = component.list("glasses")
- output = "unk"
- if next(compls) == nil then
- output = "none"
- else
- for k,v in compls do
- output = k
- end
- end
- return output
- end
- --Outputs valid energy storage address, otherwise "none"
- function findStorage ()
- output = "none"
- for k,v in component.list() do
- for l in pairs(component.methods(k)) do
- if l == "getEnergyStored" then
- output = k
- end
- end
- end
- return output
- end
- --Gets the scale of stuff for nice displaying
- function getScale (input)
- input = math.abs(input)
- if input < 100000 then
- outscale = 1
- outlet = ""
- elseif input >= 100000000000 then
- outscale = 1000000000
- outlet = "B"
- elseif input >= 100000000 then
- outscale = 1000000
- outlet = "M"
- elseif input >= 100000 then
- outscale = 1000
- outlet = "K"
- end
- return outlet, outscale
- end
- --Adds component stuff
- component = require("component")
- mainloop = true
- --Checking if stuff is connected
- powerp = findStorage()
- if powerp == "none" then
- mainloop = false
- print("Could not find valid power storage")
- end
- bridgep = findBridge()
- if bridgep == "none" then
- mainloop = false
- print("Could not find glasses bridge")
- end
- --Trying to get block name
- if mainloop then
- power = component.proxy(powerp)
- bridge = component.proxy(bridgep)
- success, name = pcall(power.getInventoryName)
- if not success then
- name = "Power"
- end
- end
- --Setting up some values
- lastpow = power.getEnergyStored()
- maxpow = power.getMaxEnergyStored()
- maxlet, maxscale = getScale(maxpow)
- lasttime = os.time()
- maxdis = math.ceil(maxpow/(maxscale/100))/100
- function makeText(x, y, r, g, b, text, s)
- newtxt = bridge.addTextLabel()
- newtxt.setPosition(x, y)
- newtxt.setColor(r, g, b)
- newtxt.setText(text)
- newtxt.setScale(s)
- return newtxt
- end
- function makeRect(x, y, r, g, b, w, h)
- newrct = bridge.addRect()
- newrct.setPosition(x, y)
- newrct.setColor(r, g, b)
- newrct.setSize(w, h)
- return newrct
- end
- --Setting up all objects
- bridge.removeAll()
- schangetxt = makeText(3 + startposx, 42 + startposy, 0, 0.25, 0, "", 1)
- changetxt = makeText(2 + startposx, 41 + startposy, 0, 1, 0, "", 1)
- spowertxt = makeText(3 + startposx, 13 + startposy, 0.25, 0.25, 0, "", 1)
- powertxt = makeText(2 + startposx, 12 + startposy, 1, 1, 0, "", 1)
- snametxt = makeText(3 + startposx, 3 + startposy, 0.25, 0.25, 0.25, name, 1)
- nametxt = makeText(2 + startposx, 2 + startposy, 1, 1, 1, name, 1)
- powerbarunder = makeRect(2 + startposx, 22 + startposy, 0, 0, 0, 102, 17)
- powerbarbar = makeRect(3 + startposx, 23 + startposy, 1, 0, 0, 100, 15)
- powerbarover = makeRect(3 + startposx, 23 + startposy, 0, 0, 0, 0, 15)
- --The main loop
- while mainloop do
- --Calculations for values that we need to draw nicely
- newpow = power.getEnergyStored()
- newlet, newscale = getScale(newpow)
- newtime = os.time()
- timediff = newtime - lasttime
- powerdiff = math.ceil(((newpow - lastpow) / (timediff * (1000 / 60 / 60))))
- difflet, diffscale = getScale(powerdiff)
- lastpow = newpow
- lasttime = newtime
- newdis = math.ceil(newpow/(newscale/100))/100
- disdiff = math.ceil(powerdiff/(diffscale/100))/100
- --Drawing power change
- if disdiff >= 0 then
- schangetxt.setColor(0, 0.25, 0)
- schangetxt.setText("+"..math.abs(disdiff)..difflet.."/t")
- changetxt.setColor(0, 1, 0)
- changetxt.setText("+"..math.abs(disdiff)..difflet.."/t")
- else
- schangetxt.setColor(0.25, 0, 0)
- schangetxt.setText(disdiff..difflet.."/t")
- changetxt.setColor(1, 0, 0)
- changetxt.setText(disdiff..difflet.."/t")
- end
- --Power in number form
- spowertxt.setText(newdis..newlet.." / "..maxdis..maxlet)
- powertxt.setText(newdis..newlet.." / "..maxdis..maxlet)
- --The power bar
- powerbarover.setSize((100 * (1 - (newpow / maxpow))), 15)
- os.sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement