1ng0

CC - BigReactor Control for Multiturbine (startup)

Nov 29th, 2015
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.70 KB | None | 0 0
  1. os.loadAPI("button")
  2.  
  3. p = peripheral.find("tile_blockcapacitorbank_name")
  4. m = peripheral.find("monitor")
  5. r = peripheral.find("BigReactors-Reactor")
  6. redstoneOutput = "left"
  7.  
  8. turbines = {}
  9. turbines[0] = peripheral.wrap("BigReactors-Turbine_0")
  10. turbines[1] = peripheral.wrap("BigReactors-Turbine_2")
  11. turbines[2] = peripheral.wrap("BigReactors-Turbine_3")
  12. turbines[3] = peripheral.wrap("BigReactors-Turbine_4")
  13.  
  14. turbinesColor = {}
  15. turbinesColor[0] = colors.blue
  16. turbinesColor[1] = colors.yellow
  17. turbinesColor[2] = colors.black
  18. turbinesColor[3] = colors.white
  19.  
  20. local numTurbines = 4
  21. local numCapacitors = 16
  22.  
  23. turbinesOnline = {}
  24. turbinesRotorSpeed = {}
  25. turbinesRFGen = {}
  26. turbinesFluidRate = {}
  27. turbinesInductor = {}
  28. optRodLevels = {}
  29. turbinesActiveFlow = {}
  30.  
  31. local steamReactor = r.isActivelyCooled()
  32. local menuType = "Reactor"
  33. local turbineIndex = 0
  34.  
  35. local turnOnAt = 50
  36. local turnOffAt = 90
  37.  
  38. local turbinesRequireSteam = 0
  39.  
  40. local energy = 0
  41. local energyStored = 0
  42. local energyMax = 0
  43. local energyStoredPercent = 0
  44. local timerCode
  45. local mode = "Automatic"
  46. local RFProduction = 0
  47. local fuelUse = 0
  48. local coreTemp = 0
  49. local reactorOnline = false
  50. local rodLevel = 0
  51. local turbineRFGen = 0
  52.  
  53. local currDir = shell.dir()
  54.  
  55. function loadConfig()
  56.     if not fs.exists(currDir.."config.txt") or fs.isDir(currDir.."config.txt") then
  57.         return false
  58.     else
  59.         local configFile = fs.open(currDir.."config.txt","r")      
  60.         for i = 0,numTurbines-1,1 do           
  61.             optRodLevels[i] = tonumber(configFile.readLine())          
  62.         end
  63.         configFile.close()
  64.     end
  65.     return true
  66. end
  67.  
  68. function saveConfig()
  69.     local configFile = fs.open(currDir.."config.txt","w")
  70.     --configFile.writeLine("#ReactorRodLevels:")
  71.     for i = 0,numTurbines-1,1 do
  72.         configFile.writeLine(optRodLevels[i])
  73.     end
  74.     configFile.close()
  75.     return true
  76. end
  77.  
  78. function initalizeAll()
  79.     for i = 0,numTurbines-1,1 do
  80.         turbinesOnline[i] = false
  81.         turbinesRotorSpeed[i] = 0
  82.         turbinesRFGen[i] = 0
  83.         turbinesFluidRate[i] = 0
  84.         turbinesInductor[i] = 0
  85.         optRodLevels[i] = 0
  86.         turbinesActiveFlow[i] = true
  87.     end
  88. end
  89.  
  90. function setFluid()    
  91.     local output = 0
  92.     for i = 0,numTurbines-1,1 do
  93.         if not turbinesActiveFlow[i] then
  94.             --print("FluidOff: "..i)
  95.             if output == 0 then
  96.               output = turbinesColor[i]
  97.             else
  98.                 output = colors.combine(output, turbinesColor[i])
  99.                 --print("Combine: "..output.." + "..turbinesColor[i].." = "..output)
  100.             end
  101.         end
  102.     end
  103.     --print("output: "..output)
  104.     redstone.setBundledOutput(redstoneOutput, output)
  105. end
  106.  
  107. function setFluidOn(index)
  108.     turbinesActiveFlow[index] = true
  109.     setFluid()
  110. end
  111.  
  112. function setFluidOff(index)
  113.     turbinesActiveFlow[index] = false
  114.     setFluid()
  115. end
  116.  
  117. function fluidOnOff(index)
  118.     button.setButton("Fluid On", turbinesActiveFlow[index])
  119.     button.setButton("Fluid Off", not turbinesActiveFlow[index])
  120. end
  121.  
  122. function addSteamReactorButtons()
  123.    button.setTable("Reactor", reactorMenu, "", 2, 15, 19, 19)
  124.    local line = 0
  125.    local n = 0
  126.     for i = 0,numTurbines-1,1 do   
  127.         if math.fmod(i,2) == 0 then
  128.             line = line + 2
  129.             n = 0
  130.         end
  131.     button.setTable("Turbine["..i.."]", turbineMenu, i, 47+(n*13), 57+(n*13), line, line)
  132.     n = n + 1
  133.     end
  134. end
  135.  
  136. function autoMenu()
  137.    m.setTextScale(1)
  138.    button.clearTable()
  139.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  140.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  141.    
  142.    if steamReactor then
  143.       addSteamReactorButtons()
  144.    end
  145.    button.screen()
  146.    checkMode()
  147.    menuMode()
  148. end
  149.  
  150. function manualMenu()
  151.    m.setTextScale(1)
  152.    button.clearTable()
  153.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  154.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  155.    if menuType == "Reactor" then
  156.        button.setTable("Online", online, "", 3, 13, 8, 8)
  157.        button.setTable("Offline", offline, "", 15, 25, 8, 8)
  158.        button.setTable("0", setRods, 0, 11,14, 10, 10)
  159.        button.setTable("10", setRods, 10, 5,8, 12, 12)
  160.        button.setTable("20", setRods, 20, 11,14, 12, 12)
  161.        button.setTable("30", setRods, 30, 17,20, 12, 12)
  162.        button.setTable("40", setRods, 40, 5,8, 14, 14)
  163.        button.setTable("50", setRods, 50, 11,14, 14, 14)
  164.        button.setTable("60", setRods, 60, 17,20, 14, 14)
  165.        button.setTable("70", setRods, 70, 5,8, 16, 16)
  166.        button.setTable("80", setRods, 80, 11,14, 16, 16)
  167.        button.setTable("90", setRods, 90, 17,20, 16, 16)
  168.        button.setTable("+", rodPlus, "", 23, 25, 12, 12)
  169.        button.setTable("-", rodMinus, "", 23, 25, 16, 16)
  170.    else
  171.        turbineManualMenu(turbineIndex)
  172.    end
  173.  
  174.    if steamReactor then
  175.       addSteamReactorButtons()  
  176.    end
  177.    
  178.    button.screen()
  179.    checkMode()
  180.    reactorOnOff()
  181.    menuMode()
  182. end
  183.  
  184. function turbineAutoMenu()
  185.    m.setTextScale(1)
  186.    button.clearTable()
  187.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  188.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  189.    addSteamReactorButtons()
  190.    button.screen()
  191.    checkMode()
  192.    menuMode()
  193. end
  194.  
  195. function turbineManualMenu(index)
  196.    m.setTextScale(1)
  197.    button.clearTable()
  198.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  199.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  200.    addSteamReactorButtons()
  201.    button.setTable("Online", setTurbineOnline, index, 3, 13, 8, 8)
  202.    button.setTable("Offline", setTurbineOffline, index, 15, 25, 8, 8)
  203.    button.setTable("Coils On", coilsOn, index, 3, 13, 10, 10)
  204.    button.setTable("Coils Off", coilsOff, index, 15, 25, 10, 10)
  205.    button.setTable("Fluid On", setFluidOn, index, 3, 13, 12, 12)
  206.    button.setTable("Fluid Off", setFluidOff, index, 15, 25, 12, 12)
  207.    button.screen()
  208.    checkMode()
  209.    turbineOnOff(index)
  210.    coilsOnOff(index)
  211.    fluidOnOff(index)
  212.    menuMode()
  213. end
  214.  
  215. function reactorMenu()
  216.    menuType = "Reactor"
  217.    displayScreen()
  218. end
  219.  
  220. function turbineMenu(index)
  221.    menuType = "Turbine["..index.."]"
  222.    turbineIndex = index
  223.    displayScreen()
  224. end
  225.  
  226. function online()
  227.    r.setActive(true)
  228.    --button.flash("Online")
  229. end
  230.  
  231. function offline()
  232.    r.setActive(false)
  233.    --button.flash("Offline")
  234. end
  235.  
  236. function setTurbineOnline( index)
  237.    turbines[index].setActive(true)
  238.    --button.flash("Online")
  239. end
  240.  
  241. function setTurbineOffline( index)
  242.    turbines[index].setActive(false)
  243.    --button.flash("Offline")
  244. end
  245.  
  246. function setAllTurbinesOnline()
  247.    for i = 0, numTurbines-1,1 do
  248.        turbines[i].setActive(true)
  249.    end
  250. end
  251.  
  252. function setAllTurbinesOffline()
  253.    for i = 0, numTurbines-1,1 do
  254.        turbines[i].setActive(false)
  255.    end
  256. end
  257.  
  258. function reactorOnOff()
  259.    button.setButton("Online", r.getActive())
  260.    button.setButton("Offline", not r.getActive())
  261. end
  262.  
  263. function turbineOnOff( index)  
  264.    button.setButton("Online", turbines[index].getActive())
  265.    button.setButton("Offline", not turbines[index].getActive())
  266. end
  267.  
  268. function coilsOnOff( index)  
  269.    button.setButton("Coils On", turbines[index].getInductorEngaged())
  270.    button.setButton("Coils Off", not turbines[index].getInductorEngaged())
  271. end
  272.  
  273. function coilsOn( index)
  274.    turbines[index].setInductorEngaged(true)
  275. end
  276.  
  277. function coilsOff( index)
  278.    turbines[index].setInductorEngaged(false)
  279. end
  280.  
  281. function setAllCoilsOn()
  282.     for i = 0, numTurbines-1,1 do
  283.        turbines[i].setInductorEngaged(true)
  284.     end
  285. end
  286.  
  287. function setAllCoilsOff()
  288.     for i = 0,numTurbines-1,1 do
  289.        turbines[i].setInductorEngaged(false)
  290.     end
  291. end
  292.  
  293. function menuMode()
  294.    if steamReactor then
  295.    if menuType == "Reactor" then
  296.      button.setButton("Reactor", true)
  297.      for  i = 0,numTurbines-1,1 do
  298.          button.setButton("Turbine["..i.."]",false)
  299.      end
  300.    else
  301.      button.setButton("Reactor", false)
  302.      for  i = 0, numTurbines-1, 1 do
  303.          if menuType == "Turbine["..i.."]" then
  304.              button.setButton("Turbine["..i.."]",true)
  305.          else
  306.              button.setButton("Turbine["..i.."]",false)
  307.          end
  308.      end
  309.    end
  310.    end
  311. end
  312.  
  313. function setRods(setLevel)
  314.    print("Setting Rod Level: "..setLevel)
  315.    button.flash(tostring(setLevel))
  316.    r.setAllControlRodLevels(setLevel)
  317.    fuelRodLevel()
  318. end
  319.  
  320. function rodPlus()
  321.    button.flash("+")
  322.    r.setAllControlRodLevels(rodLevel+1)
  323.    fuelRodLevel()
  324. end
  325.  
  326. function rodMinus()
  327.    button.flash("-")
  328.    r.setAllControlRodLevels(rodLevel-1)
  329.    fuelRodLevel()
  330. end
  331.  
  332. function checkMode()
  333.    button.toggleButton(mode)
  334. end
  335.    
  336. function manualMode()
  337.    mode = "Manual"
  338.    manualMenu()
  339. end
  340.  
  341. function autoMode()
  342.    mode = "Automatic"
  343.    displayScreen()
  344. end
  345.  
  346. function comma_value(amount)
  347.    local formatted = amount
  348.    local swap = false
  349.    if formatted < 0 then
  350.       formatted = formatted*-1
  351.       swap = true
  352.    end
  353.    while true do
  354.       formatted, k = string.gsub(formatted, "^(%d+)(%d%d%d)", '%1,%2')
  355.       if k == 0 then
  356.          break
  357.       end
  358.    end
  359.    if swap then
  360.      formatted = "-"..formatted
  361.    end
  362.    return formatted
  363. end
  364.  
  365. function displayEn()
  366.    m.clear()
  367.    m.setCursorPos(1,1)
  368.    --print("Energy Use: "..energy)
  369.    m.write("Energy Use: ")
  370.    if energy < 0 then
  371.       m.setTextColor(colors.red)
  372.    else
  373.       m.setTextColor(colors.green)
  374.    end
  375.    m.write(comma_value(math.floor(energy)).. "RF/t")
  376.    m.setTextColor(colors.white)
  377.    m.setCursorPos(1,2)
  378.    m.write("Energy Stored: "..energyStoredPercent.."%")
  379.    if menuType == "Reactor" then
  380.       m.setCursorPos(1,3)
  381.       m.write("Reactor is: ")
  382.       if reactorOnline then
  383.        m.setTextColor(colors.green)
  384.        m.write("Online")
  385.       else
  386.        m.setTextColor(colors.red)
  387.        m.write("Offline")
  388.       end
  389.       m.setTextColor(colors.white)
  390.       m.setCursorPos(28,1)
  391.       if steamReactor then
  392.          m.write("Steam: ")
  393.          m.setTextColor(colors.green)
  394.          m.write(comma_value(math.floor(RFProduction)).."MB/t")
  395.       else
  396.          m.write("RF Gen: ")
  397.          m.setTextColor(colors.green)
  398.          m.write(comma_value(math.floor(RFProduction)).."RF/t")
  399.       end
  400.       m.setTextColor(colors.white)
  401.       m.setCursorPos(28,2)
  402.       m.write("Core Temp: "..math.floor(coreTemp).."c")
  403.       m.setCursorPos(28,3)
  404.       m.write("Fuel Use: "..fuelUse.."MB/t")  
  405.   else
  406.       local currTurbine = menuType
  407.       m.setCursorPos(1,3)
  408.       m.write(currTurbine.." is: ")  
  409.       if turbinesOnline[turbineIndex] then
  410.        m.setTextColor(colors.green)
  411.        m.write("Online")
  412.       else
  413.        m.setTextColor(colors.red)
  414.        m.write("Offline")
  415.       end
  416.       m.setCursorPos(1,4)
  417.       m.setTextColor(colors.white)
  418.       m.write("Reactor is: ")
  419.       if reactorOnline then
  420.          m.setTextColor(colors.green)
  421.          m.write("Online")
  422.       else
  423.          m.setTextColor(colors.red)
  424.          m.write("Offline")
  425.       end
  426.       m.setTextColor(colors.white)
  427.       m.setCursorPos(28,1)
  428.       m.write("RFGen: ")
  429.       m.setTextColor(colors.green)
  430.       m.write(comma_value(math.floor(turbinesRFGen[turbineIndex])).."RF/t")
  431.       m.setTextColor(colors.white)
  432.       m.setCursorPos(28,2)
  433.       m.write("Rotor: "..comma_value(math.floor(turbinesRotorSpeed[turbineIndex])).." RPM")
  434.       m.setCursorPos(28,3)
  435.       m.write("Steam: "..comma_value(turbinesFluidRate[turbineIndex]).."MB/t")  
  436.   end
  437.  
  438. end
  439.    
  440. function checkEn()
  441.    local tempEnergy = 0
  442.    energyStored = p.getEnergyStored()
  443.    energyMax = p.getMaxEnergyStored()
  444.    energyStoredPercent = math.floor((energyStored/energyMax)*100)
  445.    RFProduction = r.getEnergyProducedLastTick()
  446.    fuelUse = r.getFuelConsumedLastTick()
  447.    fuelUse = math.floor(fuelUse*100)
  448.    fuelUse = fuelUse/100
  449.    coreTemp = r.getFuelTemperature()
  450.    reactorOnline = r.getActive()
  451.    tempEnergy = p.getEnergyStored()
  452.    sleep(0.1)
  453.    energy = (p.getEnergyStored()-tempEnergy)/2
  454.    energy = energy*numCapacitors
  455.    if steamReactor then
  456.      turbineRFGen = 0
  457.      for  i = 0,numTurbines-1,1 do        
  458.          turbinesOnline[i] = turbines[i].getActive()
  459.          turbinesRotorSpeed[i] = turbines[i].getRotorSpeed()
  460.          turbinesRFGen[i] = turbines[i].getEnergyProducedLastTick()
  461.          turbinesFluidRate[i] = turbines[i].getFluidFlowRate()
  462.          turbineRFGen = turbineRFGen + turbinesRFGen[i]
  463.      end
  464.    end
  465. end
  466.  
  467. function fuelRodLevel()
  468.    rodLevel = r.getControlRodLevel(0)
  469.    --print(rodLevel)
  470.    m.setCursorPos(30,5)
  471.    m.write(tostring(rodLevel).."%")
  472.    m.setBackgroundColor(colors.white)
  473.    m.setCursorPos(28,6)
  474.    m.write("       ")
  475.    for i = 1,10 do
  476.       m.setCursorPos(28,i+6)
  477.       m.setBackgroundColor(colors.white)
  478.       m.write(" ")
  479.       m.setBackgroundColor(colors.yellow)
  480.       m.write(" ")
  481.       if rodLevel/10 >= i then
  482.          m.setBackgroundColor(colors.red)
  483.       else
  484.          m.setBackgroundColor(colors.yellow)
  485.       end
  486.       m.write("   ")
  487.       m.setBackgroundColor(colors.yellow)
  488.       m.write(" ")
  489.       m.setBackgroundColor(colors.white)
  490.       m.write(" ")
  491.    end
  492.    m.setCursorPos(28,17)
  493.    m.write("       ")
  494.    m.setBackgroundColor(colors.black)
  495. end
  496.  
  497. function turbineInductorDisplay(index)
  498.    turbineInductor = turbines[index].getInductorEngaged()
  499.    m.setCursorPos(30,5)
  500.    if turbineInductor then
  501.       m.write("On")
  502.    else
  503.       m.write("Off")
  504.    end
  505.    m.setBackgroundColor(colors.gray)
  506.    m.setCursorPos(28,6)
  507.    m.write("       ")
  508.    for i = 1,7 do
  509.       m.setCursorPos(28,i+6)
  510.       m.setBackgroundColor(colors.gray)
  511.       m.write(" ")
  512.       m.setBackgroundColor(colors.lightGray)
  513.       m.write(" ")
  514.       if i % 2 == 0 then
  515.          m.setBackgroundColor(colors.gray)
  516.       end
  517.       m.write(" ")
  518.       m.setBackgroundColor(colors.gray)
  519.       m.write(" ")
  520.       if i % 2 ~= 0 then
  521.          m.setBackgroundColor(colors.lightGray)
  522.       end
  523.       m.write(" ")
  524.       m.setBackgroundColor(colors.lightGray)
  525.       m.write(" ")
  526.       m.setBackgroundColor(colors.gray)
  527.       m.write(" ")
  528.    end
  529.    for i = 8,10 do
  530.    m.setCursorPos(28,i+6)
  531.       m.setBackgroundColor(colors.gray)
  532.       m.write(" ")
  533.       m.setBackgroundColor(colors.lightGray)
  534.       m.write(" ")
  535.       if turbineInductor then
  536.          m.setBackgroundColor(colors.red)
  537.       else
  538.          m.setBackgroundColor(colors.blue)
  539.       end
  540.       m.write(" ")
  541.       m.setBackgroundColor(colors.gray)
  542.       m.write(" ")
  543.       if turbineInductor then
  544.          m.setBackgroundColor(colors.red)
  545.       else
  546.          m.setBackgroundColor(colors.blue)
  547.       end
  548.       m.write(" ")
  549.       m.setBackgroundColor(colors.lightGray)
  550.       m.write(" ")
  551.       m.setBackgroundColor(colors.gray)
  552.       m.write(" ")
  553.    end
  554.    m.setCursorPos(28,17)
  555.    m.write("       ")
  556.    m.setBackgroundColor(colors.black)
  557. end
  558.  
  559. function getClick()
  560.    local event, side, x, y = os.pullEvent("monitor_touch")
  561.    button.checkxy(x,y)
  562. end
  563.  
  564. function findOptFuelRods()
  565.    m.clear()
  566.    r.setActive(false)
  567.    checkEn()
  568.    displayEn()
  569.    fuelRodLevel()
  570.    while r.getFuelTemperature() > 99 do
  571.       for i= 1,3 do
  572.         checkEn()
  573.         displayEn()
  574.         fuelRodLevel()
  575.         m.setCursorPos(3,6)
  576.         m.write("Finding Optimal Rod Level")
  577.         m.setCursorPos(3,7)
  578.         m.write("Core Temp: "..r.getFuelTemperature())
  579.         m.setCursorPos(3,8)
  580.         m.write("Waiting for 99c")
  581.         sleep(1)
  582.       end
  583.    end
  584.    while r.getHotFluidAmount() > 10000 do
  585.      for i = 1,3 do
  586.         checkEn()
  587.         displayEn()
  588.         fuelRodLevel()
  589.         m.setCursorPos(3,6)
  590.         m.write("Finding Optimal Rod Level, please wait....")
  591.         m.setCursorPos(3,7)
  592.         m.write("Fluid Amount: "..comma_value(r.getHotFluidAmount()).."mb")
  593.         m.setCursorPos(3,8)
  594.         m.write("Waiting for 10,000mb")
  595.         sleep(1)
  596.       end
  597.    end
  598.    r.setAllControlRodLevels(99)
  599.    r.setActive(true)
  600.    
  601.    while r.getFuelTemperature() < 100 do
  602.    for i = 1,5 do
  603.      checkEn()
  604.      displayEn()
  605.      fuelRodLevel()
  606.      m.setCursorPos(3,6)
  607.      m.write("Set all rod levels to 99")
  608.      m.setCursorPos(3,7)
  609.      m.write("Waiting 5 seconds...")
  610.      sleep(1)
  611.    end
  612.    end
  613.    for i = 1,5 do
  614.      checkEn()
  615.      displayEn()
  616.      fuelRodLevel()
  617.      m.setCursorPos(3,6)
  618.      m.write("Set all rod levels to 99")
  619.      m.setCursorPos(3,7)
  620.      m.write("Waiting 5 seconds...")
  621.      sleep(1)
  622.    end
  623.    local tempMBlow = r.getEnergyProducedLastTick()
  624.    print(tempMBlow.."MB/t of steam")
  625.    for n = 1, numTurbines,1 do  
  626.        local tempRodLevels = math.floor((2000*n)/tempMBlow)
  627.        print((2000*n).."/"..tempMBlow.." = "..tempRodLevels)
  628.        tempRodLevels = 100-tempRodLevels+5
  629.        print("Adding 5 to Rod Levels: "..tempRodLevels)  
  630.        r.setAllControlRodLevels(math.floor(tempRodLevels))
  631.        print("Waiting 10 seconds to confirm...")
  632.        for i = 1,10 do
  633.          checkEn()
  634.          displayEn()
  635.          fuelRodLevel()
  636.          m.setCursorPos(3,6)
  637.          m.write("Estimated Level: "..tempRodLevels)
  638.          m.setCursorPos(3,7)
  639.          m.write("Waiting 10 seconds...")
  640.          sleep(1)
  641.        end
  642.        tempMB = r.getEnergyProducedLastTick()
  643.        while tempMB > (2000*n) do
  644.           tempRodLevels = tempRodLevels+1
  645.           r.setAllControlRodLevels(math.floor(tempRodLevels))
  646.           print("Setting Rod Levels to: "..tempRodLevels)
  647.           for i = 1,5 do
  648.            checkEn()
  649.            displayEn()
  650.            fuelRodLevel()
  651.            m.setCursorPos(3,6)
  652.            m.write("Getting below "..(2000*n).."mb/t")
  653.            m.setCursorPos(3,7)
  654.            m.write("Currently at: "..tempMB)
  655.            sleep(1)
  656.           end
  657.           tempMB = r.getEnergyProducedLastTick()
  658.        end
  659.        while tempMB < (2000*n) do
  660.           tempRodLevels = tempRodLevels -1
  661.           r.setAllControlRodLevels(math.floor(tempRodLevels))
  662.           print("Setting Rod Levels to: "..tempRodLevels)
  663.           for i = 1,5 do
  664.            checkEn()
  665.            displayEn()
  666.            fuelRodLevel()
  667.            m.setCursorPos(3,6)
  668.            m.write("Getting Above "..(2000*n).."mb/t")
  669.            m.setCursorPos(3,7)
  670.            m.write("Currently at: "..tempMB)
  671.            sleep(1)
  672.           end
  673.           tempMB = r.getEnergyProducedLastTick()
  674.        end
  675.        optRodLevels[n-1] = tempRodLevels
  676.    end
  677.    r.setActive(false)
  678. end
  679.    
  680. function adjustRods()
  681.     print("NumTurbinesRequireSteam: "..turbinesRequireSteam)
  682.     if turbinesRequireSteam <= 0 then
  683.         r.setActive(false)
  684.         turbinesRequireSteam = 0
  685.     else
  686.         r.setActive(true)
  687.         r.setAllControlRodLevels(optRodLevels[turbinesRequireSteam-1])
  688.     end    
  689. end
  690.    
  691. function autoReactor()
  692.    if not steamReactor then
  693.       r.setAllControlRodLevels(0)
  694.       if energyStoredPercent < turnOnAt then
  695.        if not reactorOnline then
  696.          online()
  697.        end
  698.       end
  699.       if energyStoredPercent > turnOffAt then
  700.        if reactorOnline then
  701.          offline()
  702.        end
  703.       end
  704.     else
  705.        if energyStoredPercent < turnOnAt then
  706.          --online()
  707.              setAllTurbinesOnline()
  708.              setAllCoilsOn()
  709.        end
  710.        if energyStoredPercent > turnOffAt then
  711.          --if turbineRotorSpeed > 1800 then
  712.          --   offline()
  713.          --else
  714.             --   online()
  715.          --end
  716.          setAllTurbinesOnline()
  717.          setAllCoilsOff()
  718.        end     
  719.        turbinesRequireSteam = 0
  720.     for  i = 0,numTurbines-1,1 do      
  721.         if turbines[i].getRotorSpeed() > 1800 then         
  722.             turbinesActiveFlow[i] = false
  723.         else
  724.             turbinesRequireSteam = turbinesRequireSteam + 1
  725.             turbinesActiveFlow[i] = true
  726.         end
  727.     end
  728.         setFluid()
  729.         adjustRods()    
  730.     end
  731. end
  732.  
  733. function displayScreen()
  734.  --  repeat
  735.       checkEn()
  736.       displayEn()
  737.       if menuType == "Reactor" then
  738.         fuelRodLevel()
  739.         if mode == "Automatic" then
  740.            autoMenu()
  741.            autoReactor()
  742.         else
  743.            manualMenu()
  744.         end    
  745.       else    
  746.         turbineInductorDisplay(turbineIndex)
  747.         if mode == "Automatic" then
  748.            turbineAutoMenu()
  749.            autoReactor()
  750.         else
  751.            turbineManualMenu(turbineIndex)
  752.         end    
  753.       end
  754.      
  755.       timerCode = os.startTimer(1)
  756.       local event, side, x, y
  757.       repeat
  758.         event, side, x, y = os.pullEvent()
  759.         --print(event)
  760.         if event == "timer" then
  761.            --print(timerCode..":"..side)
  762.            if timerCode ~= side then
  763.               --print("Wrong Code")
  764.             else
  765.               --print("Right Code")
  766.             end
  767.         end
  768.        until event~= "timer" or timerCode == side
  769.        if event == "monitor_touch" then
  770.             --print(x..":"..y)
  771.             button.checkxy(x,y)
  772.         end
  773.  --  until event ~= "timer"
  774. end
  775.  
  776. initalizeAll()
  777.  
  778. if steamReactor then
  779.     if not loadConfig() then
  780.         findOptFuelRods()
  781.         saveConfig()
  782.     end
  783. end
  784.  
  785. while true do
  786.    displayScreen()
  787. end
Add Comment
Please, Sign In to add comment