Advertisement
mrkarp

ReactorMaster

Sep 18th, 2015
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.57 KB | None | 0 0
  1. -- Startup
  2. print('ReactorControl Engaged. View Monitor.')
  3.  
  4. print("Please Give Reactor Name e.g. BigReactors-Reactor_#")
  5. reactorNameInput = read()
  6. print("Please enter the side that the monitor is connected")
  7. monitorSideInput = read()
  8. print("Please enter # of control rods")
  9. controlRodNumber = read()
  10.  
  11. -- Vars
  12. emptyflag = 0
  13. offlineflag = 0
  14. flashflag = 0
  15.  
  16. -- Peripherals
  17. reactor = peripheral.wrap(reactorNameInput)
  18. monitor = peripheral.wrap(monitorSideInput)
  19.  
  20. -- Monitor Settings
  21. monitor.setTextScale(1)
  22. monitor.setBackgroundColor(colors.black)
  23.  
  24. if fs.exists("ProgressBar") then
  25.     write("You have the API")
  26.  else
  27.     write("Downloading API")
  28.     shell.run("pastebin get Rzxj0KKM ProgressBar")
  29.     write("Restarting Program")
  30.     restart()
  31. end
  32.  
  33. -- Reactor Connection Checl
  34. if (reactor.getConnected)
  35.     main()
  36. end
  37. --Load ProgressBar API
  38. os.loadAPI('ProgressBar')
  39. ProgressBar.SetPeripheral(monitorWrap )
  40.  
  41. function MakeFuelInfo ()
  42.  
  43.     fuelMax = reactor.getFuelAmountMax()
  44.     fuelAmount = reactor.getFuelAmount()
  45.     fuelAmountText = math.floor(((reactor.getFuelAmount()/reactor.getFuelAmountMax())*100)+0.5)
  46.     monitor.setCursorPos(20, 2)
  47.     monitor.setTextColor(colors.yellow)
  48.     monitor.write(fuelAmountText..' % Fuel')
  49. end
  50.  
  51. function MakeWasteInfo()   
  52.  
  53.     wasteMax = reactor.getFuelAmountMax()
  54.     wasteAmount = reactor.getWasteAmount()
  55.     wasteAmountText = math.floor(((reactor.getWasteAmount()/reactor.getFuelAmountMax())*100)+0.5)
  56.     monitor.setCursorPos(20, 3)
  57.     monitor.setTextColor(colors.cyan)
  58.     monitor.write(wasteAmountText..' % Waste')
  59. end
  60.  
  61. function ControlRods(numberOfRods)
  62. local cursorPos = 6
  63. local rodName = 1
  64. local rodIndex = 0
  65.  
  66.     --Run for each rod
  67.         for i=1, numberOfRods do       
  68.             monitor.setTextColor(colors.green)
  69.             monitor.setCursorPos(1,cursorPos)
  70.             monitor.write(cursorPos.. 'R%: ')
  71.             monitor.setCursorPos(20,6)
  72.             monitor.write(' '..(100-(reactor.getControlRodLevel(0)))..'% Depth')
  73.             rodName = (100-(reactor.getControlRodLevel(rodIndex)))
  74.             rodName + 1
  75.             cursorPos + 1
  76.             rodIndex + 1
  77.         end
  78. end
  79.  
  80. function GetCasingHeatinfo()
  81.        
  82.         if reactor.getCasingTemperature()>=650 then
  83.             monitor.setTextColor(colors.purple)
  84.             else if reactor.getCasingTemperature()>=950 then
  85.                 monitor.setTextColor(colors.red)
  86.             else
  87.             monitor.setTextColor(colors.green)
  88.             end
  89.         end
  90.         casingTemp = math.floor(reactor.getCasingTemperature()*100)+0.5
  91.         monitor.setCursorPos(26,12)
  92.         monitor.write(casingTemp..' C')
  93. end
  94.  
  95.  function GetFuelHeatInfo()
  96.  
  97.         if reactor.getFuelTemperature()>=650 then
  98.           monitor.setTextColor(colors.purple)
  99.           else if reactor.getFuelTemperature()>=950 then
  100.             monitor.setTextColor(colors.red)
  101.           else
  102.          monitor.setTextColor(colors.green)
  103.           end
  104.         end
  105.         fuelTemp = reactor.getFuelTemperature()
  106.         monitor.write(fuelTemp..'C')
  107.         monitor.setCursorPos(26,12)
  108.         monitor.write(fuelTemp..' C')
  109.  end
  110.  
  111.  function GetFluxInfo()
  112.         -- RF Stored
  113.         rfStored = reactor.getEnergyStored()
  114.         rfStoredFormat = rfStored / 1000
  115.  
  116.         monitor.setCursorPos(15,16)
  117.         monitor.write(rfStoredFormat..'K Stored')
  118.         --------------------------------------------------
  119.         -- RF Per Tick
  120.         monitor.setCursorPos(1,17)
  121.         monitor.setTextColor(colors.orange)
  122.         rfPerTick = reactor.getEnergyProducedLastTick()
  123.         monitor.setCursorPos(22,17)
  124.         monitor.write((math.floor(reactor.getEnergyProducedLastTick()+0.5))..' RF/t')
  125.         --------------------------------------------------
  126.  
  127.  end
  128.  
  129. -- Main Function
  130. function main()
  131.     while true do
  132.     -- Initial Setup
  133.         monitor.clear()
  134.         monitor.setCursorPos(1,1)
  135.         monitor.setTextColor(colors.white)
  136.     -----------------------------------------------
  137.  
  138.     -- Make Fuel info
  139.         --Set POS, Color, Title
  140.         monitor.setCursorPos(1,2)
  141.         monitor.setTextColor(colors.yellow)
  142.         monitor.write('Fuel %:')
  143.         MakeFuelInfo()
  144.     -----------------------------------------------
  145.  
  146.     -- Waste Bar
  147.         --Set POS, Color, Title
  148.         monitor.setCursorPos(1,3)
  149.         monitor.setTextColor(colors.lightBlue)
  150.         monitor.write('Waste %:')
  151.         MakeWasteInfo()
  152.     -----------------------------------------------
  153.        
  154.     -- Control Rod
  155.         --Set POS, Color, Title
  156.         monitor.setCursorPos(1,5)
  157.         monitor.setTextColor(colors.white)
  158.         monitor.write('Control Rod Levels:')
  159.         ControlRods(controlRodNumber)
  160.     -----------------------------------------------
  161.        
  162.     -- Temps and Heat
  163.         monitor.setCursorPos(1,11)
  164.         monitor.setTextColor(colors.white)
  165.         monitor.write('Temperature:')
  166.    
  167.         monitor.setCursorPos(1,12)
  168.         monitor.setTextColor(colors.lightGray)
  169.         monitor.write('Casing: ')
  170.         GetCasingHeatinfo()
  171.         --------------------------------------------------
  172.         monitor.setCursorPos(1,13)
  173.         monitor.setTextColor(colors.yellow)
  174.         monitor.write('Fuel: ')
  175.         GetFuelHeatInfo()
  176.     --------------------------------------------------
  177.    
  178.     -- Flux Information
  179.         monitor.setCursorPos(1,15)
  180.         -- Flux Information
  181.         monitor.setTextColor(colors.white)
  182.         -- Title
  183.         monitor.write('Flux:')
  184.         monitor.setCursorPos(1,16)
  185.         monitor.setTextColor(colors.green)
  186.         GetFluxInfo()
  187.     -------------------------------------------------- 
  188.        
  189.        
  190.         monitor.setCursorPos(1,18)
  191.  
  192.         if flashflag==0 then
  193.           flashflag=1
  194.           if offlineflag==1 then
  195.             monitor.setCursorPos(1,19)
  196.             monitor.setTextColor(colors.lightGray)
  197.             monitor.write('OFFLINE - Manual Override')
  198.           end
  199.           if emptyflag==1 then
  200.             monitor.setCursorPos(1,19)
  201.             monitor.setTextColor(colors.pink)
  202.             monitor.write('OFFLINE - Fuel Exhausted')
  203.           end
  204.           if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)>75 then
  205.             monitor.setCursorPos(1,19)
  206.             monitor.setTextColor(colors.yellow)
  207.             monitor.write('ONLINE - Low Power Mode')
  208.           end
  209.           if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)<=75 then
  210.             monitor.setCursorPos(1,19)
  211.             monitor.setTextColor(colors.orange)
  212.             monitor.write('ONLINE - High Power Mode')
  213.           end
  214.         else
  215.           flashflag=0
  216.           monitor.setCursorPos(1,19)
  217.           monitor.clearLine()
  218.         end
  219.  
  220.         if reactor.getEnergyStored()<=10000000 and reactor.getEnergyStored()>100 then
  221.             reactor.setAllControlRodLevels(0+(math.floor(reactor.getEnergyStored()/100000)))
  222.         else
  223.             reactor.setAllControlRodLevels(0)
  224.         end
  225.          
  226.         if reactor.getFuelAmount()<=100 and offlineflag==0 then
  227.             reactor.setAllControlRodLevels(100)
  228.             reactor.setActive(false)
  229.             emptyflag=1
  230.         else
  231.             emptyflag=0
  232.         end
  233.              
  234.         if rs.getInput('bottom')==false and emptyflag==0 then
  235.             reactor.setActive(true)
  236.             offlineflag=0
  237.         end
  238.          
  239.         if rs.getInput('bottom')==true and emptyflag==0 then
  240.             reactor.setActive(false)
  241.             reactor.setAllControlRodLevels(100)
  242.             offlineflag=1
  243.         end    
  244.     sleep(1)
  245.     end
  246. end
  247.  
  248. function restart()
  249.     main()
  250. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement