Advertisement
Scarjit

Untitled

Oct 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. local reactor = peripheral.wrap("back")
  2. local monitor = peripheral.wrap("monitor_0")
  3.  
  4. if reactor == nil then
  5. error("No reactor found")
  6. end
  7. if monitor == nil then
  8. error("No monitor found")
  9. end
  10.  
  11. local energyStored = 0
  12. local energyProduced = 0
  13. local energyCapacity = 0
  14. local fillPercentage = 0
  15. local controlRodLevel = 0
  16.  
  17. -- Initialize Battery Window
  18. local batteryWindowBG = window.create(monitor, 2, 2, 5, 10, true)
  19. local batteryWindowFG = window.create(monitor, 2, 2, 5, 5, true)
  20.  
  21. batteryWindowBG.setBackgroundColor(colours.red)
  22. batteryWindowBG.clear()
  23. batteryWindowBG.redraw()
  24.  
  25. batteryWindowFG.setBackgroundColor(colours.green)
  26. batteryWindowFG.clear()
  27. batteryWindowFG.redraw()
  28.  
  29. -- Initialize Controll Rod Window
  30. local cRodWindowBG = window.create(monitor, 10, 2, 5, 10, true)
  31. local cRodWindowFG = window.create(monitor, 10, 2, 5, 5, true)
  32.  
  33. cRodWindowBG.setBackgroundColor(colours.grey)
  34. cRodWindowBG.clear()
  35. cRodWindowBG.redraw()
  36.  
  37. cRodWindowFG.setBackgroundColor(colours.yellow)
  38. cRodWindowFG.clear()
  39. cRodWindowFG.redraw()
  40.  
  41.  
  42. local function round(num, numDecimalPlaces)
  43. local mult = 10^(numDecimalPlaces or 2)
  44. return math.floor(num * mult + 0.5) / mult
  45. end
  46.  
  47. local function getAvgControlRodLevel()
  48. local levelTotal = 0
  49. for i=1, reactor.getNumberOfControlRods()-1 do
  50. levelTotal = levelTotal + reactor.getControlRodLevel(i)
  51. end
  52. local avglvl = levelTotal / reactor.getNumberOfControlRods()
  53. print(avglvl)
  54. return avglvl
  55. end
  56.  
  57. local function UpdateReactorStats()
  58. local stats = reactor.getEnergyStats()
  59. energyStored = stats["energyStored"]
  60. energyProduced = stats["energyProducedLastTick"]
  61. energyCapacity = stats["energyCapacity"]
  62. controlRodLevel = getAvgControlRodLevel()
  63. if energyStored == 0 then
  64. fillPercentage = 0
  65. else
  66. fillPercentage = energyStored / energyCapacity * 100
  67. end
  68. end
  69.  
  70. local function ClearScreen()
  71. term.setBackgroundColor(colours.black)
  72. term.clear()
  73. term.setCursorPos(1,1)
  74. end
  75.  
  76. local function ClearMonitor()
  77. monitor.setBackgroundColor(colours.black)
  78. monitor.clear()
  79. monitor.setCursorPos(1,1)
  80. end
  81.  
  82. local function UpdateMonitorStats()
  83. batteryWindowFG.reposition(2, 2, 5, round(fillPercentage/10))
  84.  
  85. batteryWindowBG.redraw()
  86. batteryWindowFG.redraw()
  87.  
  88.  
  89. batteryWindowFG.reposition(10, 2, 5, round(controlRodLevel/10))
  90. cRodWindowBG.redraw()
  91. cRodWindowFG.redraw()
  92. end
  93.  
  94. ClearScreen()
  95. ClearMonitor()
  96. UpdateReactorStats()
  97.  
  98. while true do
  99. os.sleep(0.01)
  100. UpdateReactorStats()
  101. ClearScreen()
  102. ClearMonitor()
  103. UpdateMonitorStats()
  104. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement