Advertisement
Guest User

mainComp

a guest
Mar 2nd, 2015
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 16.02 KB | None | 0 0
  1. os.loadAPI("button")
  2. --if (not fs.exists("r")) then shell.run("rom/programs/http/pastebin", "get", "", "r") end
  3. --if (not fs.exists("t")) then shell.run("rom/programs/http/pastebin", "get", "", "t") end
  4. --if (not fs.exists("rAPI")) then shell.run("rom/programs/http/pastebin", "get", "", "rAPI") end
  5. os.loadAPI("r")
  6. os.loadAPI("t")
  7.  
  8. --[[
  9. print("test")
  10. p = peripheral.find("tile_blockcapacitorbank_name")
  11. r = peripheral.find("BigReactors-Reactor")
  12. t = peripheral.find("BigReactors-Turbine")
  13. --]]
  14. m = peripheral.find("monitor")
  15. wm = peripheral.find("modem")
  16.  
  17. r.init(wm,66,6)
  18. t.init(wm,666,6)
  19.  
  20. local steamReactor = r.isActivelyCooled()
  21.  
  22. local menuType = "Reactor"
  23.  
  24. local numCapacitors = 0
  25. local turnOnAt = 50
  26. local turnOffAt = 90
  27.  
  28. local targetSpeed = 1840
  29.  
  30. local energy = 0
  31. local energyStored = 0
  32. local energyMax = 0
  33. local energyStoredPercent = 0
  34. local timerCode
  35. local mode = "Automatic"
  36. local RFProduction = 0
  37. local fuelUse = 0
  38. local coreTemp = 0
  39. local reactorOnline = false
  40. local rodLevel = 0
  41.  
  42. local turbineOnline = false
  43. local turbineRotorSpeed = 0
  44. local turbineRFGen = 0
  45. local turbineFluidRate = 0
  46. local turbineInductor = false
  47.  
  48. local OptFuelRodLevel = 0
  49.  
  50. function autoMenu()
  51.    m.setTextScale(1)
  52.    button.clearTable()
  53.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  54.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  55.    
  56.    if steamReactor then
  57.       button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  58.       button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  59.    end
  60.    button.screen()
  61.    checkMode()
  62.    menuMode()
  63. end
  64.  
  65. function manualMenu()
  66.    m.setTextScale(1)
  67.    button.clearTable()
  68.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  69.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  70.    button.setTable("Online", online, "", 3, 13, 8, 8)
  71.    button.setTable("Offline", offline, "", 15, 25, 8, 8)
  72.    button.setTable("0", setRods, 0, 11,14, 10, 10)
  73.    button.setTable("10", setRods, 10, 5,8, 12, 12)
  74.    button.setTable("20", setRods, 20, 11,14, 12, 12)
  75.    button.setTable("30", setRods, 30, 17,20, 12, 12)
  76.    button.setTable("40", setRods, 40, 5,8, 14, 14)
  77.    button.setTable("50", setRods, 50, 11,14, 14, 14)
  78.    button.setTable("60", setRods, 60, 17,20, 14, 14)
  79.    button.setTable("70", setRods, 70, 5,8, 16, 16)
  80.    button.setTable("80", setRods, 80, 11,14, 16, 16)
  81.    button.setTable("90", setRods, 90, 17,20, 16, 16)
  82.    button.setTable("+", rodPlus, "", 23, 25, 12, 12)
  83.    button.setTable("-", rodMinus, "", 23, 25, 16, 16)
  84.  
  85.    if steamReactor then
  86.       button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  87.       button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  88.      
  89.    end
  90.    button.screen()
  91.    checkMode()
  92.    reactorOnOff()
  93.    menuMode()
  94. end
  95.  
  96. function turbineAutoMenu()
  97.    m.setTextScale(1)
  98.    button.clearTable()
  99.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  100.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  101.    button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  102.    button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  103.    button.screen()
  104.    checkMode()
  105.    menuMode()
  106. end
  107.  
  108. function turbineManualMenu()
  109.    m.setTextScale(1)
  110.    button.clearTable()
  111.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  112.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  113.    button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  114.    button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  115.    button.setTable("Online", setTurbineOnline, "", 3, 13, 8, 8)
  116.    button.setTable("Offline", setTurbineOffline, "", 15, 25, 8, 8)
  117.    button.setTable("Coils On", coilsOn, "", 3, 13, 10, 10)
  118.    button.setTable("Coils Off", coilsOff, "", 15, 25, 10, 10)
  119.    button.screen()
  120.    checkMode()
  121.    turbineOnOff()
  122.    coilsOnOff()
  123.    menuMode()
  124. end
  125.  
  126. function reactorMenu()
  127.    menuType = "Reactor"
  128.    displayScreen()
  129. end
  130.  
  131. function turbineMenu()
  132.    menuType = "Turbine"
  133.    displayScreen()
  134. end
  135.  
  136. function online()
  137.    r.setActive(true)
  138.    --button.flash("Online")
  139. end
  140.  
  141. function offline()
  142.    r.setActive(false)
  143.    --button.flash("Offline")
  144. end
  145.  
  146. function setTurbineOnline()
  147.    t.setActive(true)
  148.    --button.flash("Online")
  149. end
  150.  
  151. function setTurbineOffline()
  152.    t.setActive(false)
  153.    --button.flash("Offline")
  154. end
  155.  
  156. function reactorOnOff()
  157.    button.setButton("Online", r.getActive())
  158.    button.setButton("Offline", not r.getActive())
  159. end
  160.  
  161. function turbineOnOff()
  162.    button.setButton("Online", t.getActive())
  163.    button.setButton("Offline", not t.getActive())
  164. end
  165.  
  166. function coilsOnOff()
  167.    button.setButton("Coils On", t.getInductorEngaged())
  168.    button.setButton("Coils Off", not t.getInductorEngaged())
  169. end
  170.  
  171. function coilsOn()
  172.    t.setInductorEngaged(true)
  173. end
  174.  
  175. function coilsOff()
  176.    t.setInductorEngaged(false)
  177. end
  178.  
  179. function menuMode()
  180.    if steamReactor then
  181.    if menuType == "Reactor" then
  182.      button.setButton("Reactor", true)
  183.      button.setButton("Turbine", false)
  184.    else
  185.      button.setButton("Reactor", false)
  186.      button.setButton("Turbine", true)
  187.    end
  188.    end
  189. end
  190.  
  191. function setRods(setLevel)
  192.    print("Setting Rod Level: "..setLevel)
  193.    button.flash(tostring(setLevel))
  194.    r.setAllControlRodLevels(setLevel)
  195.    fuelRodLevel()
  196. end
  197.  
  198. function rodPlus()
  199.    button.flash("+")
  200.    r.setAllControlRodLevels(rodLevel+1)
  201.    fuelRodLevel()
  202. end
  203.  
  204. function rodMinus()
  205.    button.flash("-")
  206.    r.setAllControlRodLevels(rodLevel-1)
  207.    fuelRodLevel()
  208. end
  209.  
  210. function checkMode()
  211.    button.toggleButton(mode)
  212. end
  213.    
  214. function manualMode()
  215.    mode = "Manual"
  216.    manualMenu()
  217. end
  218.  
  219. function autoMode()
  220.    mode = "Automatic"
  221.    displayScreen()
  222. end
  223.  
  224. function comma_value(amount)
  225.    local formatted = amount
  226.    local swap = false
  227.    if formatted < 0 then
  228.       formatted = formatted*-1
  229.       swap = true
  230.    end
  231.    while true do
  232.       formatted, k = string.gsub(formatted, "^(%d+)(%d%d%d)", '%1,%2')
  233.       if k == 0 then
  234.          break
  235.       end
  236.    end
  237.    if swap then
  238.      formatted = "-"..formatted
  239.    end
  240.    return formatted
  241. end
  242.  
  243. function displayEn()
  244.    m.clear()
  245.    m.setCursorPos(1,1)
  246.    --print("Energy Use: "..energy)
  247.    m.write("Energy Use: ")
  248.    if energy < 0 then
  249.       m.setTextColor(colors.red)
  250.    else
  251.       m.setTextColor(colors.green)
  252.    end
  253.    m.write(comma_value(math.floor(energy)).. "RF/t")
  254.    m.setTextColor(colors.white)
  255.    m.setCursorPos(1,2)
  256.    m.write("Energy Stored: "..energyStoredPercent.."%")
  257.    if menuType == "Reactor" then
  258.       m.setCursorPos(1,3)
  259.       m.write("Reactor is: ")
  260.       if reactorOnline then
  261.        m.setTextColor(colors.green)
  262.        m.write("Online")
  263.       else
  264.        m.setTextColor(colors.red)
  265.        m.write("Offline")
  266.       end
  267.       m.setTextColor(colors.white)
  268.       m.setCursorPos(22,1)
  269.       if steamReactor then
  270.          m.write("Steam: ")
  271.          m.setTextColor(colors.green)
  272.          m.write(comma_value(math.floor(RFProduction)).."MB/t")
  273.       else
  274.          m.write("RF Gen: ")
  275.          m.setTextColor(colors.green)
  276.          m.write(comma_value(math.floor(RFProduction)).."RF/t")
  277.       end
  278.       m.setTextColor(colors.white)
  279.       m.setCursorPos(22,2)
  280.       m.write("Core Temp: "..math.floor(coreTemp).."c")
  281.       m.setCursorPos(22,3)
  282.       m.write("Fuel Use: "..fuelUse.."MB/t")  
  283.   else
  284.       m.setCursorPos(1,3)
  285.       m.write("Turbine is: ")
  286.       if turbineOnline then
  287.        m.setTextColor(colors.green)
  288.        m.write("Online")
  289.       else
  290.        m.setTextColor(colors.red)
  291.        m.write("Offline")
  292.       end
  293.       m.setCursorPos(1,4)
  294.       m.setTextColor(colors.white)
  295.       m.write("Reactor is: ")
  296.       if reactorOnline then
  297.          m.setTextColor(colors.green)
  298.          m.write("Online")
  299.       else
  300.          m.setTextColor(colors.red)
  301.          m.write("Offline")
  302.       end
  303.       m.setTextColor(colors.white)
  304.       m.setCursorPos(22,1)
  305.       m.write("RFGen: ")
  306.       m.setTextColor(colors.green)
  307.       m.write(comma_value(math.floor(turbineRFGen)).."RF/t")
  308.       m.setTextColor(colors.white)
  309.       m.setCursorPos(22,2)
  310.       m.write("Rotor: "..comma_value(math.floor(turbineRotorSpeed)).." RPM")
  311.       m.setCursorPos(22,3)
  312.       m.write("Steam: "..comma_value(turbineFluidRate).."MB/t")  
  313.   end
  314.  
  315. end
  316.  
  317. function checkEn()
  318.    local tempEnergy = 0
  319.    --energyStored = p.getEnergyStored()
  320.    --energyMax = p.getMaxEnergyStored()
  321.    --energyStoredPercent = math.floor((energyStored/energyMax)*100)
  322.    RFProduction = r.getEnergyProducedLastTick()
  323.    print("RFProduction: "..RFProduction)
  324.    fuelUse = r.getFuelConsumedLastTick()
  325.    fuelUse = math.floor(fuelUse*100)
  326.    fuelUse = fuelUse/100
  327.    coreTemp = r.getFuelTemperature()
  328.    reactorOnline = r.getActive()
  329.    --tempEnergy = p.getEnergyStored()
  330.    sleep(0.1)
  331.    --energy = (p.getEnergyStored()-tempEnergy)/2
  332.    --energy = energy*numCapacitors
  333.    if steamReactor then
  334.      turbineOnline = t.getActive()
  335.      turbineRotorSpeed = t.getRotorSpeed()
  336.      turbineRFGen = t.getEnergyProducedLastTick()
  337.      turbineFluidRate = t.getFluidFlowRate()
  338.    end
  339. end
  340.  
  341. function fuelRodLevel()
  342.    rodLevel = r.getControlRodLevel(0)
  343.    --print(rodLevel)
  344.    m.setCursorPos(30,5)
  345.    m.write(tostring(rodLevel).."%")
  346.    m.setBackgroundColor(colors.white)
  347.    m.setCursorPos(28,6)
  348.    m.write("       ")
  349.    for i = 1,10 do
  350.       m.setCursorPos(28,i+6)
  351.       m.setBackgroundColor(colors.white)
  352.       m.write(" ")
  353.       m.setBackgroundColor(colors.yellow)
  354.       m.write(" ")
  355.       if rodLevel/10 >= i then
  356.          m.setBackgroundColor(colors.red)
  357.       else
  358.          m.setBackgroundColor(colors.yellow)
  359.       end
  360.       m.write("   ")
  361.       m.setBackgroundColor(colors.yellow)
  362.       m.write(" ")
  363.       m.setBackgroundColor(colors.white)
  364.       m.write(" ")
  365.    end
  366.    m.setCursorPos(28,17)
  367.    m.write("       ")
  368.    m.setBackgroundColor(colors.black)
  369. end
  370.  
  371. function turbineInductorDisplay()
  372.    turbineInductor = t.getInductorEngaged()
  373.    m.setCursorPos(30,5)
  374.    if turbineInductor then
  375.       m.write("On")
  376.    else
  377.       m.write("Off")
  378.    end
  379.    m.setBackgroundColor(colors.gray)
  380.    m.setCursorPos(28,6)
  381.    m.write("       ")
  382.    for i = 1,7 do
  383.       m.setCursorPos(28,i+6)
  384.       m.setBackgroundColor(colors.gray)
  385.       m.write(" ")
  386.       m.setBackgroundColor(colors.lightGray)
  387.       m.write(" ")
  388.       if i % 2 == 0 then
  389.          m.setBackgroundColor(colors.gray)
  390.       end
  391.       m.write(" ")
  392.       m.setBackgroundColor(colors.gray)
  393.       m.write(" ")
  394.       if i % 2 ~= 0 then
  395.          m.setBackgroundColor(colors.lightGray)
  396.       end
  397.       m.write(" ")
  398.       m.setBackgroundColor(colors.lightGray)
  399.       m.write(" ")
  400.       m.setBackgroundColor(colors.gray)
  401.       m.write(" ")
  402.    end
  403.    for i = 8,10 do
  404.    m.setCursorPos(28,i+6)
  405.       m.setBackgroundColor(colors.gray)
  406.       m.write(" ")
  407.       m.setBackgroundColor(colors.lightGray)
  408.       m.write(" ")
  409.       if turbineInductor then
  410.          m.setBackgroundColor(colors.red)
  411.       else
  412.          m.setBackgroundColor(colors.blue)
  413.       end
  414.       m.write(" ")
  415.       m.setBackgroundColor(colors.gray)
  416.       m.write(" ")
  417.       if turbineInductor then
  418.          m.setBackgroundColor(colors.red)
  419.       else
  420.          m.setBackgroundColor(colors.blue)
  421.       end
  422.       m.write(" ")
  423.       m.setBackgroundColor(colors.lightGray)
  424.       m.write(" ")
  425.       m.setBackgroundColor(colors.gray)
  426.       m.write(" ")
  427.    end
  428.    m.setCursorPos(28,17)
  429.    m.write("       ")
  430.    m.setBackgroundColor(colors.black)
  431. end
  432. function getClick()
  433.    local event, side, x, y = os.pullEvent("monitor_touch")
  434.    button.checkxy(x,y)
  435. end
  436.  
  437. function findOptFuelRods()
  438.    m.clear()
  439.    r.setActive(false)
  440.    checkEn()
  441.    displayEn()
  442.    fuelRodLevel()
  443.    while r.getFuelTemperature() > 99 do
  444.       for i= 1,3 do
  445.         checkEn()
  446.         displayEn()
  447.         fuelRodLevel()
  448.         m.setCursorPos(3,6)
  449.         m.write("Finding Optimal Rod Level")
  450.         m.setCursorPos(3,7)
  451.         m.write("Core Temp: "..r.getFuelTemperature())
  452.         m.setCursorPos(3,8)
  453.         m.write("Waiting for 99c")
  454.         sleep(1)
  455.       end
  456.    end
  457.    while r.getHotFluidAmount() > 10000 do
  458.      for i = 1,3 do
  459.         checkEn()
  460.         displayEn()
  461.         fuelRodLevel()
  462.         m.setCursorPos(3,6)
  463.         m.write("Finding Optimal Rod Level, please wait....")
  464.         m.setCursorPos(3,7)
  465.         m.write("Fluid Amount: "..comma_value(r.getHotFluidAmount()).."mb")
  466.         m.setCursorPos(3,8)
  467.         m.write("Waiting for 10,000mb")
  468.         sleep(1)
  469.       end
  470.    end
  471.    r.setAllControlRodLevels(99)
  472.    r.setActive(true)
  473.    
  474.    while r.getFuelTemperature() < 100 do
  475.    for i = 1,5 do
  476.      checkEn()
  477.      displayEn()
  478.      fuelRodLevel()
  479.      m.setCursorPos(3,6)
  480.      m.write("Set all rod levels to 99")
  481.      m.setCursorPos(3,7)
  482.      m.write("Waiting 5 seconds...")
  483.      sleep(1)
  484.    end
  485.    end
  486.    for i = 1,5 do
  487.      checkEn()
  488.      displayEn()
  489.      fuelRodLevel()
  490.      m.setCursorPos(3,6)
  491.      m.write("Set all rod levels to 99")
  492.      m.setCursorPos(3,7)
  493.      m.write("Waiting 5 seconds...")
  494.      sleep(1)
  495.    end
  496.    local tempMB = r.getEnergyProducedLastTick()
  497.    print(tempMB.."MB/t of steam")
  498.    local tempRodLevels = math.floor(2000/tempMB)
  499.    print("2000/"..tempMB.." = "..tempRodLevels)
  500.    tempRodLevels = 100-tempRodLevels+5
  501.    print("Adding 5 to Rod Levels: "..math.floor(tempRodLevels))
  502.    r.setAllControlRodLevels(math.floor(tempRodLevels))
  503.    print("Waiting 10 seconds to confirm...")
  504.    for i = 1,10 do
  505.      checkEn()
  506.      displayEn()
  507.      fuelRodLevel()
  508.      m.setCursorPos(3,6)
  509.      m.write("Estimated Level: "..tempRodLevels)
  510.      m.setCursorPos(3,7)
  511.      m.write("Waiting 10 seconds...")
  512.      sleep(1)
  513.    end
  514.    tempMB = r.getEnergyProducedLastTick()
  515.    while tempMB > 2000 do
  516.       tempRodLevels = tempRodLevels+1
  517.       r.setAllControlRodLevels(math.floor(tempRodLevels))
  518.       print("Setting Rod Levels to: "..tempRodLevels)
  519.       for i = 1,5 do
  520.        checkEn()
  521.        displayEn()
  522.        fuelRodLevel()
  523.        m.setCursorPos(3,6)
  524.        m.write("Getting below 2000mb/t")
  525.        m.setCursorPos(3,7)
  526.        m.write("Currently at: "..tempMB)
  527.        sleep(1)
  528.       end
  529.       tempMB = r.getEnergyProducedLastTick()
  530.    end
  531.    while tempMB < 2000 do
  532.       tempRodLevels = tempRodLevels -1
  533.       r.setAllControlRodLevels(math.floor(tempRodLevels))
  534.       print("Setting Rod Levels to: "..tempRodLevels)
  535.       for i = 1,5 do
  536.        checkEn()
  537.        displayEn()
  538.        fuelRodLevel()
  539.        m.setCursorPos(3,6)
  540.        m.write("Getting Above 2000mb/t")
  541.        m.setCursorPos(3,7)
  542.        m.write("Currently at: "..tempMB)
  543.        sleep(1)
  544.       end
  545.       tempMB = r.getEnergyProducedLastTick()
  546.    end
  547.    OptFuelRodLevel = tempRodLevels
  548. end
  549.    
  550.  
  551. function autoReactor()
  552.    if not steamReactor then
  553.       r.setAllControlRodLevels(0)
  554.       if energyStoredPercent < turnOnAt then
  555.        if not reactorOnline then
  556.          online()
  557.        end
  558.       end
  559.       if energyStoredPercent > turnOffAt then
  560.        if reactorOnline then
  561.          offline()
  562.        end
  563.       end
  564.     else
  565.        r.setAllControlRodLevels(OptFuelRodLevel)
  566.        if energyStoredPercent < turnOnAt then
  567.          --online()
  568.              setTurbineOnline()
  569.              coilsOn()
  570.        end
  571.        if energyStoredPercent > turnOffAt then
  572.          --if turbineRotorSpeed > 1800 then
  573.          --   offline()
  574.          --else
  575.             --   online()
  576.          --end
  577.          setTurbineOnline()
  578.          coilsOff()
  579.        end
  580.     if turbineRotorSpeed > targetSpeed then
  581.        offline()
  582.     else
  583.        online()
  584.     end
  585.     end
  586. end
  587.  
  588. function displayScreen()
  589.  --  repeat
  590.       checkEn()
  591.       displayEn()
  592.       if menuType == "Reactor" then
  593.         fuelRodLevel()
  594.         if mode == "Automatic" then
  595.            autoMenu()
  596.            autoReactor()
  597.         else
  598.            manualMenu()
  599.         end
  600.        
  601.       else
  602.         turbineInductorDisplay()
  603.         if mode == "Automatic" then
  604.            turbineAutoMenu()
  605.            autoReactor()
  606.         else
  607.            turbineManualMenu()
  608.         end
  609.        
  610.       end
  611.      
  612.       timerCode = os.startTimer(1)
  613.       local event, side, x, y
  614.       repeat
  615.         event, side, x, y = os.pullEvent()
  616.         print(event)
  617.         if event == "timer" then
  618.            print(timerCode..":"..side)
  619.            if timerCode ~= side then
  620.               print("Wrong Code")
  621.             else
  622.               print("Right Code")
  623.             end
  624.         end
  625.       until event~= "timer" or timerCode == side
  626.       if event == "monitor_touch" then
  627.             print(x..":"..y)
  628.             button.checkxy(x,y)
  629.         end
  630.  --  until event ~= "timer"
  631. end
  632.  
  633. if steamReactor then
  634.    findOptFuelRods()
  635. end
  636.  
  637. while true do
  638.    displayScreen()
  639. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement