Advertisement
Guest User

reactor

a guest
Jan 21st, 2020
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.87 KB | None | 0 0
  1. component = require("component")
  2. utils = require("utils")
  3. event = require("event")
  4. term = require("term")
  5.  
  6. reactor = component.br_reactor
  7. transposer = component.transposer
  8. modem = component.modem
  9.  
  10. local isRunning = true
  11.  
  12. ENERGY_STORES = { ultimate_energy_cube = { max = "getMaxEnergy", curr = "getEnergy" } }
  13.  
  14. MAXENERGY_PERCENT = 70
  15. MINENERGY_PERCENT = 30
  16.  
  17. INTERFACE = 4
  18. INLET = 5
  19.  
  20. local maxCapacity = 0
  21. local comps = { }
  22.  
  23. function main()
  24.   event.listen("key_down", onKeyDown)
  25.   term.clear()
  26.  
  27.   for comp, data in pairs(ENERGY_STORES) do
  28.     for add, t in component.list() do
  29.       if t == comp then
  30.         maxCapacity = maxCapacity + component.invoke(add, data.max)
  31.         comps[add] = data.curr
  32.       end
  33.     end
  34.   end
  35.  
  36.   print("Start")
  37.   print("Max Energy: " .. maxCapacity)
  38.  
  39.   while isRunning do
  40.     work()
  41.     event.pull(5)
  42.   end
  43. end
  44.  
  45. function log(type, data)
  46.   print("[" .. type .. "] " .. data)
  47.   modem.broadcast(1, "reactor", type, data)
  48. end
  49.  
  50. function onKeyDown(event, sender, char, code, player)
  51.   if code == 0x0E then
  52.     isRunning = false
  53.   end
  54. end
  55.  
  56. function getCurrentPercent()
  57.   local current = 0
  58.   for add, func in pairs(comps) do
  59.     current = current + component.invoke(add, func)
  60.   end
  61.  
  62.   return current / maxCapacity * 100
  63. end
  64.  
  65. function work()
  66.   --check energy
  67.   local currentEnergy = getCurrentPercent()
  68.   log("info", "Current Energy Buffer: " .. currentEnergy .. "%")
  69.   if reactor.getActive() then
  70.     if currentEnergy > MAXENERGY_PERCENT then
  71.       reactor.setActive(false)
  72.       log("info", "Reactor Stopped")
  73.     end
  74.   else
  75.     if currentEnergy < MINENERGY_PERCENT then
  76.       reactor.setActive(true)
  77.       log("info", "Reactor Started")
  78.     end
  79.   end
  80.  
  81.   --check fuel
  82.   if transposer.getStackInSlot(INLET, 1) == nil then
  83.     if utils.refillBest(transposer, INTERFACE, INLET, 1, 1) then
  84.       log("info", "Reactor Refill")
  85.     else
  86.       log("warning", "No Fuel")
  87.     end
  88.   end
  89. end
  90.  
  91. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement