maumagro

Reactor Lua

Mar 9th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.82 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local fs = require("filesystem")
  4. local keyboard = require("keyboard")
  5. local shell = require("shell")
  6. local term = require("term")
  7. local text = require("text")
  8. local unicode = require("unicode")
  9. local sides = require("sides")
  10. local colors=require("colors")
  11.  
  12. local gpu=component.gpu
  13. local br = component.br_reactor
  14. local rs = component.redstone
  15.  
  16. local maxTemp = 5500
  17.  
  18. local tickCnt = 0
  19. local minCount = 0
  20. local tickEnergy = 0
  21. local minEnergy = 0
  22. local slp = 1
  23. local rodLevel = br.getControlRodLevel(0)
  24.  
  25. local running = true
  26. local hours = 0
  27. local mins = 0
  28.  
  29. term.clear()
  30. term.setCursorBlink(false)
  31.  
  32.  
  33. -------------------------------------------------------------------------------
  34. function getKey()
  35. return (select(4, event.pull("key_down")))
  36. end
  37.  
  38. local function printXY(row, col, s, ...)
  39. term.setCursor(col, row)
  40. print(s:format(...))
  41. end
  42.  
  43. local function gotoXY(row, col)
  44. term.setCursor(col,row)
  45. end
  46.  
  47. local function center(row, msg)
  48. local mLen = string.len(msg)
  49. w, h = gpu.getResolution()
  50. term.setCursor((w - mLen)/2,row)
  51. print(msg)
  52. end
  53.  
  54. local function centerF(row, msg, ...)
  55. local mLen = string.len(msg)
  56. w, h = gpu.getResolution()
  57. term.setCursor((w - mLen)/2,row)
  58. print(msg:format(...))
  59. end
  60.  
  61. local function warning(row, msg)
  62. local mLen = string.len(msg)
  63. w, h = gpu.getResolution()
  64. term.setCursor((w - mLen)/2,row)
  65. print(msg)
  66. end
  67.  
  68.  
  69. local controlKeyCombos = {[keyboard.keys.s]=true,[keyboard.keys.w]=true,
  70. [keyboard.keys.c]=true,[keyboard.keys.x]=true}
  71.  
  72.  
  73. local function onKeyDown(opt)
  74. if opt == keyboard.keys.left then
  75. br.setActive(false)
  76. elseif opt == keyboard.keys.right then
  77. br.setActive(true)
  78. elseif opt == keyboard.keys.up then
  79. if (rodLevel > 0) then
  80. rodLevel = rodLevel - 10
  81. br.setAllControlRodLevels(rodLevel)
  82. end
  83. elseif opt == keyboard.keys.down then
  84. if (rodLevel < 100) then
  85. rodLevel = rodLevel + 10
  86. br.setAllControlRodLevels(rodLevel)
  87. end
  88. elseif opt == keyboard.keys.pageDown then
  89. br.doEjectWaste()
  90. elseif opt == keyboard.keys.q then
  91. running = false
  92. end
  93. end
  94.  
  95. -------------------------------------------------------------------------------
  96.  
  97.  
  98. while running do
  99. tickCnt = tickCnt + 1
  100. if tickCnt == 20 then
  101. mins = mins + 1
  102. tickCnt = 0
  103. end
  104.  
  105. if math.fmod(tickCnt,20) == 0 then
  106. br.doEjectWaste()
  107. end
  108.  
  109. if mins == 60 then
  110. hours = hours + 1
  111. mins = 0
  112. end
  113.  
  114. local reactorTemp = br.getCasingTemperature()
  115. term.setCursor(1,1)
  116. print(" Item Name: Level: Temperature: Fuel: Max Fuel Waste:")
  117. printXY(4, 1, " 1: %s %03d %04d %06d %06d %04d",br.getControlRodName(0), br.getControlRodLevel(0), br.getFuelTemperature(0), br.getFuelAmount(0), br.getFuelAmountMax(0), br.getWasteAmount(0))
  118. printXY(6, 1, " 2: %s %03d %04d %06d %06d %04d",br.getControlRodName(5), br.getControlRodLevel(5), br.getFuelTemperature(5), br.getFuelAmount(5), br.getFuelAmountMax(5), br.getWasteAmount(5))
  119. printXY(8, 1, " 3: %s %03d %04d %06d %06d %04d",br.getControlRodName(3), br.getControlRodLevel(3), br.getFuelTemperature(3), br.getFuelAmount(3), br.getFuelAmountMax(3), br.getWasteAmount(3))
  120. printXY(10, 1, " 4: %s %03d %04d %06d %06d %04d",br.getControlRodName(6), br.getControlRodLevel(6), br.getFuelTemperature(6), br.getFuelAmount(6), br.getFuelAmountMax(6), br.getWasteAmount(6))
  121. printXY(12, 1, " 5: %s %03d %04d %06d %06d %04d",br.getControlRodName(4), br.getControlRodLevel(4), br.getFuelTemperature(4), br.getFuelAmount(4), br.getFuelAmountMax(4), br.getWasteAmount(4))
  122. printXY(14, 1, " 6: %s %03d %04d %06d %06d %04d",br.getControlRodName(2), br.getControlRodLevel(2), br.getFuelTemperature(2), br.getFuelAmount(2), br.getFuelAmountMax(2), br.getWasteAmount(2))
  123. printXY(16, 1, " 7: %s %03d %04d %06d %06d %04d",br.getControlRodName(7), br.getControlRodLevel(7), br.getFuelTemperature(7), br.getFuelAmount(7), br.getFuelAmountMax(7), br.getWasteAmount(7))
  124. printXY(18, 1, " 8: %s %03d %04d %06d %06d %04d",br.getControlRodName(1), br.getControlRodLevel(1), br.getFuelTemperature(1), br.getFuelAmount(1), br.getFuelAmountMax(1), br.getWasteAmount(1))
  125. printXY(20, 1, " 9: %s %03d %04d %06d %06d %04d",br.getControlRodName(8), br.getControlRodLevel(8), br.getFuelTemperature(8), br.getFuelAmount(8), br.getFuelAmountMax(8), br.getWasteAmount(8))
  126. printXY(22, 1, " 10: Reactor %03d %04d %06d %06d %04d", br.getControlRodLevel(0), br.getCasingTemperature(), br.getFuelAmount(), br.getFuelAmountMax(), br.getWasteAmount())
  127. printXY(25, 1, " 11: Energy Stored %06.2f", br.getEnergyStored())
  128. printXY(26, 1, " 12: Energy Last Tick %06.2f", br.getEnergyProducedLastTick())
  129.  
  130. centerF(40, "Data updates every second Tick Count: %2d", tickCnt)
  131. centerF(41, "Current up time: %2d hours %2d min", hours, mins)
  132. center(42, "Left - Turn Reactor Off Right - Turn Reactor On")
  133. center(43, "Up - Pull Rods 10% Down - Lower Rods 10% ")
  134. center(44, "Page Down - Eject Waste Q - Quit ")
  135. --center(39, " ")
  136.  
  137. if (reactorTemp > maxTemp) then
  138. term.setCursor(25,30)
  139. gpu.setForeground(0xFF0000)
  140. gpu.setBackground(0xFFFFFF)
  141. warning(30, " ")
  142. warning(31, " WARNING WARNING WARNING ")
  143. warning(32, " ")
  144. warning(33, " Reactor Temperature Too High ")
  145. warning(34, " ")
  146. gpu.setForeground(0xFFFFFF)
  147. gpu.setBackground(0x000000)
  148. term.setCursor(1,41)
  149. else
  150. gpu.setForeground(0xFFFFFF)
  151. gpu.setBackground(0x000000)
  152. gotoXY(30,1)
  153. print()
  154. gotoXY(31,1)
  155. print()
  156. gotoXY(32,1)
  157. print()
  158. gotoXY(33,1)
  159. print()
  160. gotoXY(34,1)
  161. print()
  162. gpu.setForeground(0xFFFFFF)
  163. gpu.setBackground(0x000000)
  164. term.setCursor(1,47)
  165. end
  166. term.clearLine()
  167. print()
  168. local event, address, arg1, arg2, arg3 = event.pull(1)
  169. if type(address) == "string" and component.isPrimary(address) then
  170. if event == "key_down" then
  171. onKeyDown(arg2)
  172. end
  173. end
  174. end
  175.  
  176. term.clear()
  177. term.setCursorBlink(false)
Add Comment
Please, Sign In to add comment