Advertisement
Scarjit

Untitled

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