Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[local function printTable(table)
- for k, v in pairs(table) do
- if type(v) ~= "table" then
- print("k: " .. k .. ", v: " .. textutils.serialise(v))
- else
- print("k: " .. k)
- printTable(v)
- end
- end
- end--]]
- if not peripheral.isPresent("back") then
- error("Place place a modem thats connected to the power on the back of the computer.")
- end
- local monitor = peripheral.find("monitor")
- local mWrite = monitor.write
- local mSetCursorPos = monitor.setCursorPos
- local mClearScreen = monitor.clear
- local mClearLine = monitor.clearLine
- local mSetTextColor = monitor.setTextColor
- local mSizeX, mSizeY = monitor.getSize()
- local mSetBackgroundColor = monitor.setBackgroundColor
- local bottomLineY = mSizeY - 3
- local topLineY = 4
- local goodEnergyColor = colors.lime
- local goodMidEnergyColor = colors.green
- local midEnergyColor = colors.yellow
- local lowMidEnergyColor = colors.orange
- local lowEnergyColor = colors.red
- local energyLevelGraphHeight = mSizeY - 4
- -- 3 pieces
- local noEnergyColor = colors.gray
- local colorWhite = colors.white
- --print(textutils.serialise(solarEnergyStored))
- while true do
- sleep(1)
- mSetBackgroundColor(colors.black)
- local solarEnergyStored = {}
- local curSolarPower = 0
- for i = 0, 13 do
- local panel = peripheral.wrap("back").isPresentRemote("ad_astra:solar_panel_" .. i)
- if panel then
- solarEnergyStored[i + 1] = peripheral.wrap("back").callRemote("ad_astra:solar_panel_" .. i, "getEnergy")
- --print("Added panel: ad_astra:solar_panel_" .. i)
- else
- --print("Unable to find panel: ad_astra:solar_panel_" .. i)
- end
- end
- local maxSolarPower = #solarEnergyStored * 18000
- local amountPerTick = #solarEnergyStored * 15
- local lowEnergyLevel = maxSolarPower * 0.2
- local lowMidEnergyLevel = maxSolarPower * 0.4
- local midEnergyLevel = maxSolarPower * 0.6
- local goodMidEnergyLevel = maxSolarPower * 0.8
- local goodEnergyLevel = maxSolarPower
- for i = 1, #solarEnergyStored do
- curSolarPower = curSolarPower + solarEnergyStored[i]
- end
- local nmaxSolarPower
- local ncurSolarPower
- local curPowerNumberString = tostring(math.floor(curSolarPower))
- local maxPowerNumberString = tostring(math.floor(maxSolarPower))
- local CURPOWERfirstNumber = tonumber(string.sub(curPowerNumberString, 1, 1)) -- 4 Char +
- local MAXPOWERfirstNumber = tonumber(string.sub(maxPowerNumberString, 1, 1)) -- 4 Char +
- local CURPOWERsecondNumber = tonumber(string.sub(curPowerNumberString, 2, 2)) -- 4 Char +
- local MAXPOWERsecondNumber = tonumber(string.sub(maxPowerNumberString, 2, 2)) -- 4 Char +
- local CURPOWERthirdNumber = tonumber(string.sub(curPowerNumberString, 3, 3)) -- 5 Char +
- local MAXPOWERthirdNumber = tonumber(string.sub(maxPowerNumberString, 3, 3)) -- 5 Char +
- if #curPowerNumberString >= 4 then
- if #curPowerNumberString == 4 then -- 1k-9k
- ncurSolarPower = CURPOWERfirstNumber .. "k"
- elseif #curPowerNumberString == 5 then -- 10-99k
- ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. "k"
- elseif #curPowerNumberString == 6 then -- 100k - 999k
- ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. CURPOWERthirdNumber .. "k"
- elseif #curPowerNumberString == 7 then -- 1M - 9M
- ncurSolarPower = CURPOWERfirstNumber .. "M"
- elseif #curPowerNumberString == 8 then -- 10M - 99M
- ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. "M"
- else
- ncurSolarPower = curSolarPower
- end
- end
- if #maxPowerNumberString >= 4 then
- if #maxPowerNumberString == 4 then -- 1k-9k
- nmaxSolarPower = MAXPOWERfirstNumber .. "." .. MAXPOWERsecondNumber .. "k"
- elseif #maxPowerNumberString == 5 then -- 10-99k
- nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. "k"
- elseif #maxPowerNumberString == 6 then -- 100k - 999.9k
- nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. MAXPOWERthirdNumber .. "k"
- elseif #maxPowerNumberString == 7 then -- 1M - 9M
- nmaxSolarPower = MAXPOWERfirstNumber .. "M"
- elseif #maxPowerNumberString == 8 then -- 10M - 99M
- nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. "M"
- else
- nmaxSolarPower = maxSolarPower
- end
- end
- mClearScreen()
- for i = 1, mSizeY - 3 do
- mSetCursorPos(4, i + 1)
- mSetBackgroundColor(noEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- if curSolarPower <= lowEnergyLevel then
- for i = mSizeY - 5, mSizeY - 2 do
- mSetCursorPos(4, i)
- mSetBackgroundColor(lowEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- elseif curSolarPower <= lowMidEnergyLevel and curSolarPower > lowEnergyLevel then
- for i = mSizeY - 8, mSizeY - 2 do
- mSetCursorPos(4, i)
- mSetBackgroundColor(lowMidEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- elseif curSolarPower <= midEnergyLevel and curSolarPower > lowMidEnergyLevel then
- for i = mSizeY - 11, mSizeY - 2 do
- mSetCursorPos(4, i)
- mSetBackgroundColor(midEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- elseif curSolarPower <= goodMidEnergyLevel and curSolarPower > midEnergyLevel then
- for i = mSizeY - 14, mSizeY - 2 do
- mSetCursorPos(4, i)
- mSetBackgroundColor(goodMidEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- elseif curSolarPower <= goodEnergyLevel and curSolarPower > goodMidEnergyLevel then
- for i = mSizeY - 17, mSizeY - 2 do
- mSetCursorPos(4, i)
- mSetBackgroundColor(goodEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- elseif curSolarPower == 0 then
- for i = 1, mSizeY - 3 do
- mSetCursorPos(4, i + 1)
- mSetBackgroundColor(noEnergyColor)
- mWrite(string.rep(" ", 23))
- end
- end
- if not ncurSolarPower or ncurSolarPower == nil then
- error("ncurSolarPower is nil (no solar power maybe?)")
- end
- mSetBackgroundColor(colors.black)
- mSetTextColor(colorWhite)
- mSetCursorPos(1, mSizeY - 1)
- mWrite(string.rep("-", mSizeX))
- mSetCursorPos(1, mSizeY)
- mWrite("Solar: " .. ncurSolarPower .. " / " .. nmaxSolarPower .. " | " .. amountPerTick .. "/T")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement