SHOW:
|
|
- or go back to the newest paste.
1 | os.loadAPI("glass.lua") | |
2 | os.loadAPI("kdhudconfig.lua") | |
3 | ||
4 | local r = peripheral.find("rsBridge") | |
5 | local c = peripheral.find("colonyIntegrator") | |
6 | ||
7 | local text = {} | |
8 | ||
9 | function add(str) | |
10 | table.insert(text,str) | |
11 | end | |
12 | ||
13 | function truncate(number) | |
14 | if (number == nil or tostring(number) == "nan") then number = "0" end | |
15 | number = tostring(number) | |
16 | local decimalStart = string.find(number,"[\.]") | |
17 | if (decimalStart ~= nil) then | |
18 | local tmp = string.sub(number,decimalStart+1,decimalStart+3) | |
19 | local tmp2 = string.sub(number,1,decimalStart-1) | |
20 | return tonumber(tmp2.."."..tmp) | |
21 | end | |
22 | return tonumber(number) | |
23 | end | |
24 | ||
25 | function getRSData() | |
26 | local data = {} | |
27 | local items = r.listItems() | |
28 | local fluids = r.listFluids() | |
29 | data["itemMax"] = r.getMaxItemDiskStorage()+r.getMaxItemExternalStorage() | |
30 | data["fluidMax"] = r.getMaxFluidDiskStorage()+r.getMaxFluidExternalStorage() | |
31 | data["totalItems"] = 0 | |
32 | data["totalFluids"] = 0 | |
33 | data["craftJobs"] = 0 | |
34 | for k,v in ipairs(items) do | |
35 | data["totalItems"] = data["totalItems"]+v.amount | |
36 | - | if (r.isItemCraftable(v) and r.isItemCrafting(v)) then |
36 | + | if (r.isItemCraftable(v) and r.isItemCrafting(v.name)) then |
37 | data["craftJobs"] = data["craftJobs"] + 1 | |
38 | end | |
39 | end | |
40 | for k,v in ipairs(fluids) do | |
41 | data["totalFluids"] = data["totalFluids"]+v.amount | |
42 | end | |
43 | data["itemFullness"] = truncate((data["totalItems"]/data["itemMax"])*100) | |
44 | data["fluidFullness"] = truncate((data["totalFluids"]/data["fluidMax"])*100) | |
45 | return data | |
46 | end | |
47 | ||
48 | function getColonyData() | |
49 | local data = {} | |
50 | data["underAttack"] = c.isUnderAttack() | |
51 | data["population"] = c.amountOfCitizens() | |
52 | data["housing"] = c.maxOfCitizens() | |
53 | data["visitors"] = c.getVisitors() | |
54 | data["happiness"] = c.getHappiness() | |
55 | return data | |
56 | end | |
57 | ||
58 | - | local rsData = getRSData() |
58 | + | |
59 | r = peripheral.find("rsBridge") | |
60 | - | add("-----[ KD HUD ]-----") |
60 | + | c = peripheral.find("colonyIntegrator") |
61 | text = {} | |
62 | add(" [ KD HUD ]") | |
63 | if ((c == nil or (not c.isInColony())) and r == nil) then | |
64 | add("") | |
65 | add("No supported peripherals installed, or they are invalid!") | |
66 | add("Add some to get data here!") | |
67 | end | |
68 | if (c ~= nil and c.isInColony()) then | |
69 | - | add("--------------------") |
69 | + | |
70 | - | add(" [COLONY DATA] ") |
70 | + | |
71 | - | add("--------------------") |
71 | + | add(" ----------------") |
72 | add(" [COLONY DATA]") | |
73 | add(" ----------------") | |
74 | add(cData.name) | |
75 | if (cData.underAttack) then | |
76 | add("Under attack!!!") | |
77 | end | |
78 | add("Population: "..cData.population.."/"..cData.housing) | |
79 | add("Average Happiness: "..math.floor(cData.happiness)) | |
80 | add("Visitor Count: "..tostring(#cData.visitors)) | |
81 | end | |
82 | - | add("-----------------") |
82 | + | |
83 | - | add(".[STORAGE SYSTEM]") |
83 | + | local rsData = getRSData() |
84 | - | add("-----------------") |
84 | + | |
85 | add(" ---------------- ") | |
86 | add(" [STORAGE SYSTEM] ") | |
87 | add(" ---------------- ") | |
88 | add("") | |
89 | add("Fluid Fullness: "..rsData.fluidFullness.."%") | |
90 | add("Item Fullness: "..rsData.itemFullness.."%") | |
91 | add("Craft Jobs: "..rsData.craftJobs) | |
92 | end | |
93 | ||
94 | local h = glass.text.height(text) | |
95 | - | glass.text.multiline(text,8,8,0xCC88FF) |
95 | + | |
96 | ||
97 | glass.shapes.stroke.box(3,3,w+10,h+11,0xBB77EE) | |
98 | glass.text.multiline(text,6,6,0xCC88FF) | |
99 | glass.render() | |
100 | glass.clear() | |
101 | end | |
102 | ||
103 | while true do | |
104 | main() | |
105 | sleep(kdhudconfig.updateFrequency) | |
106 | end |