Advertisement
PrinceOfCookies

Untitled

Feb 11th, 2023 (edited)
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.09 KB | None | 0 0
  1. --[[local function printTable(table)
  2. for k, v in pairs(table) do
  3. if type(v) ~= "table" then
  4. print("k: " .. k .. ", v: " .. textutils.serialise(v))
  5. else
  6. print("k: " .. k)
  7. printTable(v)
  8. end
  9. end
  10. end--]]
  11. if not peripheral.isPresent("back") then
  12. error("Place place a modem thats connected to the power on the back of the computer.")
  13. end
  14.  
  15. local monitor = peripheral.find("monitor")
  16.  
  17. local mWrite = monitor.write
  18. local mSetCursorPos = monitor.setCursorPos
  19. local mClearScreen = monitor.clear
  20. local mClearLine = monitor.clearLine
  21. local mSetTextColor = monitor.setTextColor
  22. local mSizeX, mSizeY = monitor.getSize()
  23. local mSetBackgroundColor = monitor.setBackgroundColor
  24. local bottomLineY = mSizeY - 3
  25. local topLineY = 4
  26. local goodEnergyColor = colors.lime
  27. local goodMidEnergyColor = colors.green
  28. local midEnergyColor = colors.yellow
  29. local lowMidEnergyColor = colors.orange
  30. local lowEnergyColor = colors.red
  31.  
  32. local energyLevelGraphHeight = mSizeY - 4
  33. -- 3 pieces
  34. local noEnergyColor = colors.gray
  35. local colorWhite = colors.white
  36.  
  37.  
  38. --print(textutils.serialise(solarEnergyStored))
  39.  
  40. while true do
  41. sleep(1)
  42. mSetBackgroundColor(colors.black)
  43. local solarEnergyStored = {}
  44. local curSolarPower = 0
  45. for i = 0, 13 do
  46. local panel = peripheral.wrap("back").isPresentRemote("ad_astra:solar_panel_" .. i)
  47. if panel then
  48. solarEnergyStored[i + 1] = peripheral.wrap("back").callRemote("ad_astra:solar_panel_" .. i, "getEnergy")
  49. --print("Added panel: ad_astra:solar_panel_" .. i)
  50. else
  51. --print("Unable to find panel: ad_astra:solar_panel_" .. i)
  52. end
  53. end
  54.  
  55. local maxSolarPower = #solarEnergyStored * 18000
  56. local amountPerTick = #solarEnergyStored * 15
  57.  
  58. local lowEnergyLevel = maxSolarPower * 0.2
  59. local lowMidEnergyLevel = maxSolarPower * 0.4
  60. local midEnergyLevel = maxSolarPower * 0.6
  61. local goodMidEnergyLevel = maxSolarPower * 0.8
  62. local goodEnergyLevel = maxSolarPower
  63.  
  64. for i = 1, #solarEnergyStored do
  65. curSolarPower = curSolarPower + solarEnergyStored[i]
  66. end
  67. local nmaxSolarPower
  68. local ncurSolarPower
  69.  
  70. local curPowerNumberString = tostring(math.floor(curSolarPower))
  71. local maxPowerNumberString = tostring(math.floor(maxSolarPower))
  72. local CURPOWERfirstNumber = tonumber(string.sub(curPowerNumberString, 1, 1)) -- 4 Char +
  73. local MAXPOWERfirstNumber = tonumber(string.sub(maxPowerNumberString, 1, 1)) -- 4 Char +
  74. local CURPOWERsecondNumber = tonumber(string.sub(curPowerNumberString, 2, 2)) -- 4 Char +
  75. local MAXPOWERsecondNumber = tonumber(string.sub(maxPowerNumberString, 2, 2)) -- 4 Char +
  76. local CURPOWERthirdNumber = tonumber(string.sub(curPowerNumberString, 3, 3)) -- 5 Char +
  77. local MAXPOWERthirdNumber = tonumber(string.sub(maxPowerNumberString, 3, 3)) -- 5 Char +
  78.  
  79.  
  80. if #curPowerNumberString >= 4 then
  81. if #curPowerNumberString == 4 then -- 1k-9k
  82. ncurSolarPower = CURPOWERfirstNumber .. "k"
  83. elseif #curPowerNumberString == 5 then -- 10-99k
  84. ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. "k"
  85. elseif #curPowerNumberString == 6 then -- 100k - 999k
  86. ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. CURPOWERthirdNumber .. "k"
  87. elseif #curPowerNumberString == 7 then -- 1M - 9M
  88. ncurSolarPower = CURPOWERfirstNumber .. "M"
  89. elseif #curPowerNumberString == 8 then -- 10M - 99M
  90. ncurSolarPower = CURPOWERfirstNumber .. CURPOWERsecondNumber .. "M"
  91. else
  92. ncurSolarPower = curSolarPower
  93. end
  94. end
  95.  
  96. if #maxPowerNumberString >= 4 then
  97. if #maxPowerNumberString == 4 then -- 1k-9k
  98. nmaxSolarPower = MAXPOWERfirstNumber .. "." .. MAXPOWERsecondNumber .. "k"
  99. elseif #maxPowerNumberString == 5 then -- 10-99k
  100. nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. "k"
  101. elseif #maxPowerNumberString == 6 then -- 100k - 999.9k
  102. nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. MAXPOWERthirdNumber .. "k"
  103. elseif #maxPowerNumberString == 7 then -- 1M - 9M
  104. nmaxSolarPower = MAXPOWERfirstNumber .. "M"
  105. elseif #maxPowerNumberString == 8 then -- 10M - 99M
  106. nmaxSolarPower = MAXPOWERfirstNumber .. MAXPOWERsecondNumber .. "M"
  107. else
  108. nmaxSolarPower = maxSolarPower
  109. end
  110. end
  111.  
  112. mClearScreen()
  113.  
  114. for i = 1, mSizeY - 3 do
  115. mSetCursorPos(4, i + 1)
  116. mSetBackgroundColor(noEnergyColor)
  117. mWrite(string.rep(" ", 23))
  118. end
  119.  
  120.  
  121. if curSolarPower <= lowEnergyLevel then
  122. for i = mSizeY - 5, mSizeY - 2 do
  123. mSetCursorPos(4, i)
  124. mSetBackgroundColor(lowEnergyColor)
  125. mWrite(string.rep(" ", 23))
  126. end
  127. elseif curSolarPower <= lowMidEnergyLevel and curSolarPower > lowEnergyLevel then
  128. for i = mSizeY - 8, mSizeY - 2 do
  129. mSetCursorPos(4, i)
  130. mSetBackgroundColor(lowMidEnergyColor)
  131. mWrite(string.rep(" ", 23))
  132. end
  133. elseif curSolarPower <= midEnergyLevel and curSolarPower > lowMidEnergyLevel then
  134. for i = mSizeY - 11, mSizeY - 2 do
  135. mSetCursorPos(4, i)
  136. mSetBackgroundColor(midEnergyColor)
  137. mWrite(string.rep(" ", 23))
  138. end
  139. elseif curSolarPower <= goodMidEnergyLevel and curSolarPower > midEnergyLevel then
  140. for i = mSizeY - 14, mSizeY - 2 do
  141. mSetCursorPos(4, i)
  142. mSetBackgroundColor(goodMidEnergyColor)
  143. mWrite(string.rep(" ", 23))
  144. end
  145. elseif curSolarPower <= goodEnergyLevel and curSolarPower > goodMidEnergyLevel then
  146. for i = mSizeY - 17, mSizeY - 2 do
  147. mSetCursorPos(4, i)
  148. mSetBackgroundColor(goodEnergyColor)
  149. mWrite(string.rep(" ", 23))
  150. end
  151. elseif curSolarPower == 0 then
  152. for i = 1, mSizeY - 3 do
  153. mSetCursorPos(4, i + 1)
  154. mSetBackgroundColor(noEnergyColor)
  155. mWrite(string.rep(" ", 23))
  156. end
  157. end
  158.  
  159. if not ncurSolarPower or ncurSolarPower == nil then
  160. error("ncurSolarPower is nil (no solar power maybe?)")
  161. end
  162.  
  163.  
  164. mSetBackgroundColor(colors.black)
  165. mSetTextColor(colorWhite)
  166. mSetCursorPos(1, mSizeY - 1)
  167. mWrite(string.rep("-", mSizeX))
  168. mSetCursorPos(1, mSizeY)
  169. mWrite("Solar: " .. ncurSolarPower .. " / " .. nmaxSolarPower .. " | " .. amountPerTick .. "/T")
  170. end
  171.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement