Advertisement
firelizzard

Untitled

Feb 25th, 2021
1,022
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.82 KB | None | 0 0
  1. cells = {}
  2. for _, v in pairs(peripheral.getNames()) do
  3.   t = peripheral.getType(v)
  4.   if t == "BigReactors-Reactor" then
  5.     reactor = peripheral.wrap(v)
  6.   elseif t == "BigReactors-Turbine" then
  7.     turbine = peripheral.wrap(v)
  8.   elseif t == "tile_thermalexpansion_cell_resonant_name" then
  9.     table.insert(cells, peripheral.wrap(v))
  10.   end
  11. end
  12.  
  13. maxEnergy = 1*1000*1000 + table.getn(cells)*80*1000*1000
  14. targetRotorSpeed = 4500
  15. thresholdOff = 90
  16. thresholdOn  = 10
  17.  
  18. function getEnergyStored()
  19.   e = turbine.getEnergyStored()
  20.   for _, c in pairs(cells) do
  21.     e = e + c.getEnergyStored()
  22.   end
  23.   return e
  24. end
  25.  
  26. lastEnergy = getEnergyStored()
  27.  
  28. function updateReactor()
  29.   energy = getEnergyStored()
  30.   energyPC = math.floor(energy/maxEnergy*10000)/100
  31.  
  32.   if energyPC >= thresholdOff then
  33.     activate = false
  34.   elseif energyPC < thresholdOn then
  35.     activate = true
  36.   else
  37.     activate = reactor.getActive()
  38.   end
  39.  
  40.   reactor.setActive(activate)
  41.  
  42.   write("Power ")
  43.   write(energyPC)
  44.   write("%")
  45.  
  46.   if activate then
  47.     write(" - ON")
  48.   else
  49.     write(" - OFF")
  50.   end
  51.  
  52.   underspeed = turbine.getRotorSpeed() < targetRotorSpeed * 0.99
  53.   turbine.setInductorEngaged(not underspeed)
  54.   if (active and underspeed) then
  55.     write(" - spinning up")
  56.   end
  57.   if energy < lastEnergy then
  58.     write(" - draining")
  59.   elseif energy > lastEnergy then
  60.     write(" - charging")
  61.   end
  62.  
  63.   write("\n")
  64.   lastEnergy = energy
  65. end
  66.  
  67. function update()
  68.   while true do
  69.     term.clear()
  70.     term.setCursorPos(1,1)
  71.     print("[Hit Enter to exit]")
  72.     updateReactor()
  73.     sleep(1)
  74.   end
  75. end
  76.  
  77. function waitForUser()
  78.   repeat
  79.     local event,key = os.pullEvent("key")
  80.   until key == keys.enter
  81.  
  82.   reactor.setActive(false)
  83.   print("When you're done, please relaunch startup")
  84. end
  85.  
  86. parallel.waitForAny(update, waitForUser)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement