NMDanny

BigReactors basic control computer

Jul 13th, 2014
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.27 KB | None | 0 0
  1. local modem=peripheral.wrap("monitor_1")
  2. local reactor=peripheral.wrap("BigReactors-Reactor_1")
  3. local mon=peripheral.wrap("monitor_1")
  4. local net=peripheral.wrap("back")
  5. net.open(156)
  6. local maxEnergy=10000000
  7. local pad=0
  8. local bufferSwitch=93 -- above which energy capacity percent the power production will halt.
  9.  
  10. mon.setBackgroundColor(colors.black)
  11. mon.clear()
  12.  
  13.  
  14. while true do
  15.     -- retrieve data from reactor
  16.     local energyPercent=(reactor.getEnergyStored()/maxEnergy)*100
  17.     local fuelPercent=reactor.getFuelAmount()/reactor.getFuelAmountMax()
  18.     local energyRateTick=reactor.getEnergyProducedLastTick()
  19.     local fuelPerHour=(reactor.getFuelConsumedLastTick()*20*3600)/1000 -- ingots/buckets per hour
  20.     local active=reactor.getActive()
  21.    
  22.     -- reactor auto management
  23.     reactor.setActive(energyPercent<bufferSwitch)
  24.     reactor.setAllControlRodLevels(math.floor(energyPercent))
  25.    
  26.     -- Clear screen
  27.     mon.setBackgroundColor(colors.black)
  28.     mon.clear()
  29.    
  30.    
  31.     -- Title
  32.     mon.setCursorPos(2,2)
  33.     mon.setBackgroundColor(colors.purple)
  34.     mon.setTextColor(colors.yellow)
  35.     mon.setTextScale(0.5)
  36.     mon.write("NMDanny's Reactor Control v1")
  37.    
  38.     -- Informative text
  39.     mon.setCursorPos(2,5)
  40.     mon.setBackgroundColor(colors.black)
  41.     mon.setTextColor(colors.white)
  42.     mon.setTextScale(0.5)
  43.     mon.write("Reactor is ")
  44.     if(active) then
  45.         mon.setTextColor(colors.green)
  46.         mon.write("ACTIVE")
  47.     else
  48.         mon.setTextColor(colors.red)
  49.         mon.write("INACTIVE")
  50.     end
  51.    
  52.  
  53.     info={"Current energy capacity","Maximum energy capacity","Energy buffer percent","Energy production rate","Fuel usage","Fuel rod level"}
  54.     values={math.modf(reactor.getEnergyStored()),maxEnergy,math.floor(energyPercent),math.ceil(energyRateTick),math.ceil(fuelPerHour),reactor.getControlRodLevel(1)}
  55.     units={" RF"," RF","% RF"," RF/t"," buckets per hour","%"}
  56.    
  57.     -- Send information
  58.     net.transmit(156,156,textutils.serialize(values))
  59.    
  60.     -- On program first run, check for padding
  61.     if(pad==0) then
  62.         for i=1,#info,1 do
  63.             pad=math.max(pad,#(info[i]..": "..values[i]..units[i]))
  64.         end
  65.     end
  66.    
  67.     -- Print data
  68.     mon.setTextColor(colors.white)
  69.     for i=1,#info,1 do
  70.         mon.setCursorPos(2,5+i)
  71.         local tempPad=pad-#(info[i]..": "..values[i]..units[i])
  72.         mon.write(info[i]..": "..string.rep(" ",tempPad)..values[i]..units[i])
  73.     end
  74.    
  75.     sleep(2)
  76. end
Advertisement
Add Comment
Please, Sign In to add comment