Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("glass.lua")
- os.loadAPI("kdhudconfig.lua")
- local r = peripheral.find("rsBridge")
- local c = peripheral.find("colonyIntegrator")
- local text = {}
- function add(str)
- table.insert(text,str)
- end
- function truncate(number)
- if (number == nil or tostring(number) == "nan") then number = "0" end
- number = tostring(number)
- local decimalStart = string.find(number,"[\.]")
- if (decimalStart ~= nil) then
- local tmp = string.sub(number,decimalStart+1,decimalStart+3)
- local tmp2 = string.sub(number,1,decimalStart-1)
- return tonumber(tmp2.."."..tmp)
- end
- return tonumber(number)
- end
- function getRSData()
- local data = {}
- local items = r.listItems()
- local fluids = r.listFluids()
- data["itemMax"] = r.getMaxItemDiskStorage()+r.getMaxItemExternalStorage()
- data["fluidMax"] = r.getMaxFluidDiskStorage()+r.getMaxFluidExternalStorage()
- data["totalItems"] = 0
- data["totalFluids"] = 0
- data["craftJobs"] = 0
- for k,v in ipairs(items) do
- data["totalItems"] = data["totalItems"]+v.amount
- if (r.isItemCraftable(v) and r.isItemCrafting(v.name)) then
- data["craftJobs"] = data["craftJobs"] + 1
- end
- end
- for k,v in ipairs(fluids) do
- data["totalFluids"] = data["totalFluids"]+v.amount
- end
- data["itemFullness"] = truncate((data["totalItems"]/data["itemMax"])*100)
- data["fluidFullness"] = truncate((data["totalFluids"]/data["fluidMax"])*100)
- return data
- end
- function getColonyData()
- local data = {}
- data["underAttack"] = c.isUnderAttack()
- data["population"] = c.amountOfCitizens()
- data["housing"] = c.maxOfCitizens()
- data["visitors"] = c.getVisitors()
- data["happiness"] = c.getHappiness()
- return data
- end
- function main()
- r = peripheral.find("rsBridge")
- c = peripheral.find("colonyIntegrator")
- text = {}
- add(" [ KD HUD ]")
- if ((c == nil or (not c.isInColony())) and r == nil) then
- add("")
- add("No supported peripherals installed, or they are invalid!")
- add("Add some to get data here!")
- end
- if (c ~= nil and c.isInColony()) then
- local cData = getColonyData()
- add("")
- add(" ----------------")
- add(" [COLONY DATA]")
- add(" ----------------")
- add(cData.name)
- if (cData.underAttack) then
- add("Under attack!!!")
- end
- add("Population: "..cData.population.."/"..cData.housing)
- add("Average Happiness: "..math.floor(cData.happiness))
- add("Visitor Count: "..tostring(#cData.visitors))
- end
- if (r ~= nil) then
- local rsData = getRSData()
- add("")
- add(" ---------------- ")
- add(" [STORAGE SYSTEM] ")
- add(" ---------------- ")
- add("")
- add("Fluid Fullness: "..rsData.fluidFullness.."%")
- add("Item Fullness: "..rsData.itemFullness.."%")
- add("Craft Jobs: "..rsData.craftJobs)
- end
- local h = glass.text.height(text)
- local w = glass.text.width(text)
- glass.shapes.stroke.box(3,3,w+10,h+11,0xBB77EE)
- glass.text.multiline(text,6,6,0xCC88FF)
- glass.render()
- glass.clear()
- end
- while true do
- main()
- sleep(kdhudconfig.updateFrequency)
- end
Add Comment
Please, Sign In to add comment