Advertisement
Guest User

ReactorControl.lua

a guest
May 25th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.86 KB | None | 0 0
  1. component = require("component")
  2. event = require("event")
  3. math = require("math")
  4.  
  5. reactor = component.br_reactor
  6. buffer = component.induction_matrix
  7. n=0
  8. turbines = {}
  9. lst = component.list("br_turbine")
  10. for i, _ in pairs(lst) do
  11.   turbines[n] = component.proxy(i)
  12.    n = n+1
  13. end
  14. trbcnt = n
  15.  
  16. function setTurbineOutput(num)
  17.   im = 0
  18.   if (num<=trbcnt) then
  19.     for i = 0, (math.floor(num,0)-1) do
  20.       turbines[i].setActive(true)
  21.       turbines[i].setInductorEngaged(true)
  22.       turbines[i].setFluidFlowRateMax(2000)
  23.       im = i+1
  24.       print("test1")
  25.     end
  26.     if num~=math.floor(num,0) then
  27.       turbines[im].setActive(true)
  28.       turbines[im].setInductorEngaged(true)
  29.       turbines[im].setFluidFlowRateMax(1000)
  30.       im = im + 1
  31.     end
  32.     for i=im,n-1 do
  33.       turbines[i].setActive(false)
  34.     end
  35.     return num    
  36.   else
  37.     return -1
  38.   end
  39. end
  40.  
  41. function balanceReactor()
  42.   temp = reactor.getFuelTemperature()
  43.   if temp<700 then
  44.     reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)-1)
  45.   elseif temp>500 then
  46.     reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)+1)
  47.   end
  48. end
  49.  
  50. function normalMode()
  51.   maxEn = buffer.getMaxEnergy()
  52.   storedEn = buffer.getEnergyStored()
  53.   charge = storedEn/maxEn
  54.   if charge>.8 then
  55.     reCharge = false
  56.     emergencyCharge = false
  57.   elseif charge<.33 and (not emergencyCharge) then
  58.     reCharge = true
  59.   elseif charge<.1 then
  60.     reCharge = false
  61.     emergencyCharge = true
  62.   end
  63.   print(charge)
  64.   inp = buffer.getInput()
  65.   outp = buffer.getOutput()
  66.   chargeRate = inp-outp
  67.   trbReq = math.floor((-1*chargeRate)/14000,0)/2
  68.   if trbReq<0 then trbReq = 0 end
  69.   if reCharge then trbReq = trbReq+.5 end
  70.   if emergencyCharge then trbReq = trbcnt end
  71.   setTurbineOutput(trbReq)
  72. end
  73.  
  74. function spinUpMode()
  75.  
  76. end
  77.  
  78. function maxPower()
  79.   setTurbineOutput(trbcnt)
  80. end
  81.  
  82. ----------main
  83.  
  84.  
  85. while true do
  86.   normalMode()
  87.   balanceReactor()
  88.   os.sleep(1)
  89. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement