DrFair

Big Reactor Controller Standalone

Feb 14th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. updateTime = 0.5
  2. controllerSide = "back"
  3. reactorMaxEnergy = 10000000
  4. reactorBuffer = 0.5 -- in percent
  5.  
  6. local Args = {...}
  7. if Args[1] == "update" then
  8. programName = shell.getRunningProgram()
  9. print("Updating.")
  10. fs.delete(programName)
  11. shell.run( "pastebin","get", "wA9943b8", programName )
  12. print("Finished updating.")
  13. error()
  14. end
  15.  
  16. c = peripheral.wrap("back")
  17. updateTimer = os.startTimer(updateTime)
  18. if reactorMaxEnergy - reactorBuffer < 0 then error("Reactor buffer too high") end
  19.  
  20. function updateReactor()
  21. energyStored = c.getEnergyStored() / reactorMaxEnergy
  22. energyBuffered = c.getEnergyStored() / (reactorMaxEnergy - (reactorMaxEnergy * reactorBuffer))
  23. if energyStored > 1 then energyStored = 1 end
  24. -- Set rod levels compared to stored energy.
  25. -- E.g. 0% energy stored = 100 rod level, 100% = 0 rod level.
  26. rodLevel = math.min(100, energyBuffered * 100)
  27. print("Energy: " .. energyStored)
  28. print("Rod level: " .. rodLevel)
  29. c.setAllControlRodLevels(rodLevel)
  30. c.setActive(true)
  31. end
  32.  
  33.  
  34. while true do
  35. event, p1, p2 = os.pullEvent()
  36. if event == "timer" and p1 == updateTimer then
  37. updateReactor()
  38. updateTimer = os.startTimer(updateTime - 0.05) -- Takes 1 tick
  39. end
  40. end
Advertisement
Add Comment
Please, Sign In to add comment