Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local chan=39701
- local monitor=peripheral.wrap("monitor_6")
- local modem=peripheral.wrap("left")
- modem.open(chan)
- os.loadAPI("Button")
- -- Quit button
- local quit=Button(12,7,"Quit")
- quit.startRow=3
- quit.startColumn=38
- quit.backgroundColorNormal=colors.red
- quit.backgroundColorPressed=colors.white
- quit.hasBorder=true
- quit.borderColorNormal=colors.white
- quit.borderColorPressed=colors.red
- quit.textColorNormal=colors.white
- quit.textColorPressed=colors.red
- quit.draw(monitor)
- -- Setting up variables
- local totalData={0,0,0}
- local writeFormat={[1]={"Maximum Energy Stored: "," RF"},[2]={"Energy Stored: "," RF"},[3]={"Energy Percent: ","%"}} -- each record represents a statistic, each statistic includes a label and a unit
- local reporters={}
- local width,height=monitor.getSize()
- -- Preparing the monitor for first use
- monitor.setBackgroundColor(colors.black)
- monitor.setTextColor(colors.white)
- monitor.setTextScale(.5)
- monitor.clear()
- -- Typing the monitor's title and colors
- monitor.setBackgroundColor(colors.purple)
- monitor.setTextColor(colors.yellow)
- monitor.setCursorPos(1,1)
- monitor.write("Energy Cell Management"..string.rep(" ",width-#"Energy Cell Management"))
- -- Resetting the colors
- monitor.setBackgroundColor(colors.black)
- monitor.setTextColor(colors.white)
- while true do
- local totalData={0,0,0}
- local event={os.pullEvent()}
- if event[1]=="monitor_touch" then
- if quit.clicked(event[3],event[4])==true then
- monitor.clear()
- break
- end
- elseif event[1]=="key" and event[2]==keys.q then
- monitor.clear()
- break
- elseif event[1]=="modem_message" and event[3]==chan then
- local data={}
- print(event[5]) -- debug purposes
- for word in string.gmatch(event[5],"[^%s]+") do -- splitting the string into usable data (3 slots)
- table.insert(data,word)
- end
- reporters[data[1]]={[1]=data[2],[2]=data[3],[3]=data[4]} -- data[1] is the reporter's label(and key amongst the reporetrs table), data[2] is energy stored, data[3] is max energy, data[4] is energy percent
- end
- local maxLength=#writeFormat[1][1]
- local currentRow=3
- for key,value in pairs(reporters) do -- going over all reporters (at a random order)
- monitor.setCursorPos(1,currentRow)
- monitor.write(key..": ")
- currentRow=currentRow+1
- for key2,value2 in ipairs(reporters[key]) do -- printing data for each reporter(at a specific order)
- monitor.setCursorPos(3,currentRow)
- monitor.write(string.rep(" ",maxLength-#writeFormat[key2][1])..writeFormat[key2][1]..value2..writeFormat[key2][2])
- totalData[key2]=totalData[key2]+value2
- currentRow=currentRow+1
- end
- currentRow=currentRow+1
- end
- -- Calculating and printing total statistics
- totalData[3]=math.floor(100*(totalData[2]/totalData[1])) -- total energy percent
- monitor.setCursorPos(1,currentRow)
- monitor.write("Total Energy Grid Information: ")
- currentRow=currentRow+1
- for i=1,3 do -- going over each statistic
- monitor.setCursorPos(3,currentRow)
- monitor.write(string.rep(" ",maxLength-#writeFormat[i][1])..writeFormat[i][1]..totalData[i]..writeFormat[i][2])
- currentRow=currentRow+1
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment