Advertisement
gpochy

rtcontrol

Apr 5th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.30 KB | None | 0 0
  1.  
  2. m = peripheral.wrap("monitor_0")
  3. r = peripheral.wrap("BigReactors-Reactor_0")
  4. t1 = peripheral.wrap("BigReactors-Turbine_0")
  5. t2 = peripheral.wrap("BigReactors-Turbine_1")
  6.  
  7. local turnOnAt = 75
  8. local turnOffAt = 90
  9.  
  10. local energy = 0
  11. local energyStored = 0
  12. local energyMax = 0
  13. local energyStoredPercent = 0
  14. local RFProduction = 0
  15. local fuelUse = 0
  16. local coreTemp = 0
  17.  
  18. local timerCode
  19. local reactorOnline = false
  20.  
  21. function autoMenu()
  22. --   m.clear()
  23.    m.setTextScale(1)
  24.    button.clearTable()
  25.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  26.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  27.    button.screen()
  28.    checkMode()
  29. end
  30.  
  31. function manualMenu()
  32.    m.setTextScale(1)
  33.    button.clearTable()
  34.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  35.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  36.    button.setTable("Online", online, "", 3, 13, 8, 8)
  37.    button.setTable("Offline", offline, "", 15, 25, 8, 8)
  38.    button.setTable("0", setRods, 0, 11,14, 10, 10)
  39.    button.setTable("10", setRods, 10, 5,8, 12, 12)
  40.    button.setTable("20", setRods, 20, 11,14, 12, 12)
  41.    button.setTable("30", setRods, 30, 17,20, 12, 12)
  42.    button.setTable("40", setRods, 40, 5,8, 14, 14)
  43.    button.setTable("50", setRods, 50, 11,14, 14, 14)
  44.    button.setTable("60", setRods, 60, 17,20, 14, 14)
  45.    button.setTable("70", setRods, 70, 5,8, 16, 16)
  46.    button.setTable("80", setRods, 80, 11,14, 16, 16)
  47.    button.setTable("90", setRods, 90, 17,20, 16, 16)
  48.    button.screen()
  49.    checkMode()
  50.    reactorOnOff()
  51. end
  52.  
  53. function online()
  54.    r.setActive(true)
  55.    --button.flash("Online")
  56. end
  57.  
  58. function offline()
  59.    r.setActive(false)
  60.    --button.flash("Offline")
  61. end
  62.  
  63. function reactorOnOff()
  64.    button.setButton("Online", r.getActive())
  65.    button.setButton("Offline", not r.getActive())
  66. end
  67.  
  68. function setRods(setLevel)
  69.    print("Setting Rod Level: "..setLevel)
  70.    button.flash(tostring(setLevel))
  71.    r.setAllControlRodLevels(setLevel)
  72.    fuelRodLevel()
  73. end
  74.  
  75. function checkMode()
  76.    button.toggleButton(mode)
  77. end
  78.    
  79. function manualMode()
  80.    mode = "Manual"
  81.    manualMenu()
  82. end
  83.  
  84. function autoMode()
  85.    mode = "Automatic"
  86.    displayScreen()
  87. end
  88.  
  89. function comma_value(amount)
  90.    local formatted = amount
  91.    local swap = false
  92.    if formatted < 0 then
  93.       formatted = formatted*-1
  94.       swap = true
  95.    end
  96.    while true do
  97.       formatted, k = string.gsub(formatted, "^(%d+)(%d%d%d)", '%1,%2')
  98.       if k == 0 then
  99.          break
  100.       end
  101.    end
  102.    if swap then
  103.      formatted = "-"..formatted
  104.    end
  105.    return formatted
  106. end
  107.  
  108. function displayEn()
  109.    m.clear()
  110.    m.setCursorPos(1,1)
  111.    --print("Energy Use: "..energy)
  112.    m.write("Energy Use: ")
  113.    if energy < 0 then
  114.       m.setTextColor(colors.red)
  115.    else
  116.       m.setTextColor(colors.green)
  117.    end
  118.    m.write(comma_value(math.floor(energy)).. "RF/t")
  119.    m.setTextColor(colors.white)
  120.    m.setCursorPos(1,2)
  121.    m.write("Energy Stored: "..energyStoredPercent.."%")
  122.    m.setCursorPos(1,3)
  123.    m.write("Reactor is: ")
  124.    if reactorOnline then
  125.         m.setTextColor(colors.green)
  126.         m.write("Online")
  127.    else
  128.     m.setTextColor(colors.red)
  129.         m.write("Offline")
  130.    end
  131.    m.setTextColor(colors.white)
  132.    m.setCursorPos(22,1)
  133.    m.write("RF Gen: ")
  134.    m.setTextColor(colors.green)
  135.    m.write(comma_value(math.floor(RFProduction)).."RF/T")
  136.    m.setTextColor(colors.white)
  137.    m.setCursorPos(22,2)
  138.    m.write("Core Temp: "..math.floor(coreTemp).."c")
  139.    m.setCursorPos(22,3)
  140.    m.write("Fuel Use: "..fuelUse.."MB/t")
  141. end
  142.  
  143. function checkEn()
  144.    local tempEnergy = 0
  145.    energyStored = p.getEnergyStored()
  146.    energyMax = p.getMaxEnergyStored()
  147.    energyStoredPercent = math.floor((energyStored/energyMax)*100)
  148.    RFProduction = r.getEnergyProducedLastTick()
  149.    fuelUse = r.getFuelConsumedLastTick()
  150.    fuelUse = math.floor(fuelUse*100)
  151.    fuelUse = fuelUse/100
  152.    coreTemp = r.getFuelTemperature()
  153.    reactorOnline = r.getActive()
  154.    tempEnergy = p.getEnergyStored()
  155.    sleep(0.1)
  156.    energy = (p.getEnergyStored()-tempEnergy)/2
  157. end
  158.  
  159. function fuelRodLevel()
  160.    local rodLevel = r.getControlRodLevel(0)
  161.    print(rodLevel)
  162.    m.setCursorPos(30,5)
  163.    m.write(tostring(rodLevel).."%")
  164.    m.setBackgroundColor(colors.white)
  165.    m.setCursorPos(28,6)
  166.    m.write("       ")
  167.    for i = 1,10 do
  168.       m.setCursorPos(28,i+6)
  169.           m.setBackgroundColor(colors.white)
  170.           m.write(" ")
  171.           m.setBackgroundColor(colors.yellow)
  172.           m.write(" ")
  173.           if rodLevel/10 >= i then
  174.              m.setBackgroundColor(colors.red)
  175.           else
  176.              m.setBackgroundColor(colors.yellow)
  177.           end
  178.           m.write("   ")
  179.           m.setBackgroundColor(colors.yellow)
  180.           m.write(" ")
  181.           m.setBackgroundColor(colors.white)
  182.           m.write(" ")
  183.    end
  184.    m.setCursorPos(28,17)
  185.    m.write("       ")
  186.    m.setBackgroundColor(colors.black)
  187. end
  188.  
  189. function getClick()
  190.    local event, side, x, y = os.pullEvent("monitor_touch")
  191.    button.checkxy(x,y)
  192. end
  193.  
  194. function autoReactor()
  195.    r.setAllControlRodLevels(0)
  196.    if energyStoredPercent < turnOnAt then
  197.       if not reactorOnline then
  198.              online()
  199.           end
  200.    end
  201.    if energyStoredPercent > turnOffAt then
  202.       if reactorOnline then
  203.              offline()
  204.            end
  205.         end
  206. end
  207.  
  208. function displayScreen()
  209.  --  repeat
  210.           checkEn()
  211.       displayEn()
  212.           fuelRodLevel()
  213.           if mode == "Automatic" then
  214.              autoMenu()
  215.                  autoReactor()
  216.           else
  217.              manualMenu()
  218.           end
  219.           timerCode = os.startTimer(2)
  220.           local event, side, x, y
  221.           repeat
  222.                 event, side, x, y = os.pullEvent()
  223.                 print(event)
  224.                 if event == "timer" then
  225.                    print(timerCode..":"..side)
  226.                    if timerCode ~= side then
  227.                       print("Wrong Code")
  228.                         else
  229.                           print("Right Code")
  230.                         end
  231.                 end
  232.            until event~= "timer" or timerCode == side
  233.            if event == "monitor_touch" then
  234.                 print(x..":"..y)
  235.                         button.checkxy(x,y)
  236.                 end
  237.  --  until event ~= "timer"
  238. end
  239.  
  240. while true do
  241.    displayScreen()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement