Advertisement
miezto

maincore_v2

Nov 13th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local monitor = peripheral.wrap("monitor_138")
  2. local core = peripheral.wrap("draconic_rf_storage_13")
  3. local gateBlock1 = peripheral.wrap("flux_gate_65")
  4. local gateBlock2 = peripheral.wrap("flux_gate_63")
  5. local gateBlock3 = peripheral.wrap("flux_gate_61")
  6. local gateBlock4 = peripheral.wrap("flux_gate_64")
  7. local gateBlock5 = peripheral.wrap("flux_gate_62")
  8. local gateBlock6 = peripheral.wrap("flux_gate_60")
  9. local gateExtra = peripheral.wrap("flux_gate_67")
  10. local gateRecl = peripheral.wrap("flux_gate_68")
  11. local gateRepl = peripheral.wrap("flux_gate_69")
  12.  
  13. local mon, monX, monY
  14. monX, monY = monitor.getSize()
  15. mon = {}
  16. mon.monitor,mon.X, mon.Y = monitor, monX, monY
  17.  
  18. function clear(mon)
  19.     term.clear()
  20.     term.setCursorPos(1,1)
  21.     mon.monitor.setBackgroundColor(colors.black)
  22.     mon.monitor.clear()
  23.     mon.monitor.setCursorPos(1,1)
  24. end
  25.  
  26. function draw_text(mon, x, y, text, text_color, bg_color)
  27.     mon.monitor.setBackgroundColor(bg_color)
  28.     mon.monitor.setTextColor(text_color)
  29.     mon.monitor.setCursorPos(x,y)
  30.     mon.monitor.write(text)
  31. end
  32.  
  33. function draw_text_right(mon, offset, y, text, text_color, bg_color)
  34.     mon.monitor.setBackgroundColor(bg_color)
  35.     mon.monitor.setTextColor(text_color)
  36.     mon.monitor.setCursorPos(mon.X-string.len(tostring(text))-offset,y)
  37.     mon.monitor.write(text)
  38. end
  39.  
  40. function draw_text_lr(mon, x, y, offset, text1, text2, text1_color, text2_color, bg_color)
  41.     draw_text(mon, x, y, text1, text1_color, bg_color)
  42.     draw_text_right(mon, offset, y, text2, text2_color, bg_color)
  43. end
  44.  
  45. function draw_line(mon, x, y, length, color)
  46.     if length < 0 then
  47.         length = 0
  48.     end
  49.     mon.monitor.setBackgroundColor(color)
  50.     mon.monitor.setCursorPos(x,y)
  51.     mon.monitor.write(string.rep(" ", length))
  52. end
  53.  
  54. function progress_bar(mon, x, y, length, minVal, maxVal, bar_color, bg_color)
  55.     draw_line(mon, x, y, length, bg_color)
  56.     local barSize = math.floor((minVal/maxVal) * length)
  57.     draw_line(mon, x, y, barSize, bar_color)
  58. end
  59.  
  60. function format_int(number)
  61.     if number == nil then number = 0 end
  62.     local i, j, minus, int, fraction = tostring(number):find('([-]?)(%d+)([.]?%d*)')
  63.     int = int:reverse():gsub("(%d%d%d)", "%1,")
  64.     return minus .. int:reverse():gsub("^,", "") .. fraction
  65. end
  66.  
  67. local blockTweak = 1
  68.  
  69. function save_config()
  70.     sw = fs.open("config.txt", "w")  
  71.     sw.writeLine(blockTweak)
  72.     sw.close()
  73. end
  74.  
  75. function load_config()
  76.     sr = fs.open("config.txt", "r")
  77.     blockTweak = tonumber(sr.readLine())
  78.     sr.close()
  79. end
  80.  
  81. if fs.exists("config.txt") == false then
  82.     save_config()
  83. else
  84.     load_config()
  85. end
  86.  
  87.  
  88.  
  89. local eFlowOption = 0
  90.  
  91. function buttons()
  92.     while true do
  93.         event, side, xPos, yPos = os.pullEvent("monitor_touch")
  94.         if yPos == 18 then
  95.             local cFlow = gateExtra.getSignalLowFlow()
  96.             if xPos >= 2 and xPos <= 4 then cFlow = cFlow-10000
  97.             elseif xPos >= 6 and xPos <= 8 then cFlow = cFlow-100000
  98.             elseif xPos >= 10 and xPos <= 12 then cFlow = cFlow-1000000
  99.             elseif xPos >= 18 and xPos <= 20 then cFlow = cFlow+1000000
  100.             elseif xPos >= 22 and xPos <= 24 then cFlow = cFlow+100000
  101.             elseif xPos >= 26 and xPos <= 28 then cFlow = cFlow+10000
  102.             end
  103.         gateExtra.setSignalLowFlow(cFlow)
  104.         end
  105.  
  106.         if yPos == 6 and xPos == 28 then
  107.             if eFlowOption == 1 then
  108.                 eFlowOption = 0
  109.             else
  110.                 eFlowOption = 1
  111.             end
  112.         end
  113.  
  114.         if yPos == 9 and (xPos == 27 or xPos == 28) then
  115.             if blockTweak == 1 then
  116.                 blockTweak = 0
  117.             else
  118.                 blockTweak = 1
  119.             end
  120.         end
  121.  
  122.         if blockTweak == 0 then
  123.             if (xPos >= 7 and xPos <= 9) and yPos == 10 then
  124.                 if gateBlock1.getSignalLowFlow() > 0 then
  125.                     gateBlock1.setSignalLowFlow(0)
  126.                 else
  127.                     gateBlock1.setSignalLowFlow(6000000)
  128.                 end
  129.             end
  130.             if (xPos >= 7 and xPos <= 9) and yPos == 12 then
  131.                 if gateBlock2.getSignalLowFlow() > 0 then
  132.                     gateBlock2.setSignalLowFlow(0)
  133.                 else
  134.                     gateBlock2.setSignalLowFlow(6000000)
  135.                 end
  136.             end
  137.             if (xPos >= 7 and xPos <= 9) and yPos == 14 then
  138.                 if gateBlock3.getSignalLowFlow() > 0 then
  139.                     gateBlock3.setSignalLowFlow(0)
  140.                 else
  141.                     gateBlock3.setSignalLowFlow(6000000)
  142.                 end
  143.             end
  144.             if (xPos >= 16 and xPos <= 18) and yPos == 10 then
  145.                 if gateBlock4.getSignalLowFlow() > 0 then
  146.                     gateBlock4.setSignalLowFlow(0)
  147.                 else
  148.                     gateBlock4.setSignalLowFlow(6000000)
  149.                 end
  150.             end
  151.             if (xPos >= 16 and xPos <= 18) and yPos == 12 then
  152.                 if gateBlock5.getSignalLowFlow() > 0 then
  153.                     gateBlock5.setSignalLowFlow(0)
  154.                 else
  155.                     gateBlock5.setSignalLowFlow(6000000)
  156.                 end
  157.             end
  158.             if (xPos >= 16 and xPos <= 18) and yPos == 14 then
  159.                 if gateBlock6.getSignalLowFlow() > 0 then
  160.                     gateBlock6.setSignalLowFlow(0)
  161.                 else
  162.                     gateBlock6.setSignalLowFlow(6000000)
  163.                 end
  164.             end
  165.             if (xPos >= 25 and xPos <= 27) and yPos == 10 then
  166.                 if gateRecl.getSignalLowFlow() > 0 then
  167.                     gateRecl.setSignalLowFlow(0)
  168.                 else
  169.                     gateRecl.setSignalLowFlow(6000000)
  170.                 end
  171.             end
  172.             if (xPos >= 25 and xPos <= 27) and yPos == 12 then
  173.                 if gateRepl.getSignalLowFlow() > 0 then
  174.                     gateRepl.setSignalLowFlow(0)
  175.                 else
  176.                     gateRepl.setSignalLowFlow(6000000)
  177.                 end
  178.             end
  179.         end
  180.     end
  181. end
  182.  
  183. function drawButtons(y)
  184.     draw_text(mon, 2, y, "  <", colors.white, colors.gray)
  185.     draw_text(mon, 6, y, " <<", colors.white, colors.gray)
  186.     draw_text(mon, 10, y, "<<<", colors.white, colors.gray)
  187.     draw_text(mon, 18, y, ">>>", colors.white, colors.gray)
  188.     draw_text(mon, 22, y, ">> ", colors.white, colors.gray)
  189.     draw_text(mon, 26, y, ">  ", colors.white, colors.gray)
  190. end
  191.  
  192. local eMax
  193. local eNow
  194. local ePercent
  195. local eLast = 0
  196. local eFlow
  197.  
  198. function update()
  199.     while true do
  200.         clear(mon)
  201.        
  202.         eMax = core.getMaxEnergyStored()
  203.         eNow = core.getEnergyStored()
  204.         ePercent = (math.floor(eNow/eMax*10000))/100
  205.         eFlow = math.floor((eNow-eLast)/2)
  206.         eLast = eNow
  207.  
  208.     -- terminal display
  209.         print(" Capacity:  " .. eMax .. " rf")
  210.         print("   Energy:  " .. eNow .. " rf ... " .. ePercent .. " %")
  211.         print()
  212.         if (eFlow > 0) then
  213.             print("Avg. flow: +" .. eFlow .. " rf/t")
  214.         else
  215.             print("Avg. flow: " .. eFlow .. " rf/t")
  216.         end
  217.         print()
  218.  
  219.     -- monitor display
  220.         draw_text_lr(mon, 2, 2, 0, "Main Energy Core", "Tier 7", colors.lightBlue, colors.blue, colors.black)
  221.  
  222.         local energyColor
  223.         if ePercent >= 75 then energyColor = colors.orange end
  224.         if ePercent < 75 and ePercent >= 50 then energyColor = colors.red end
  225.         if ePercent < 50 and ePercent >= 25 then energyColor = colors.purple end
  226.         if ePercent < 25 then energyColor = colors.cyan end
  227.  
  228.         if eNow >= 1000000000000 then
  229.             draw_text_lr(mon, 2, 4, 0, format_int((math.floor(eNow/1000000000))/1000) .. " T rf", ePercent .. " %", colors.lightGray, energyColor, colors.black)
  230.         elseif eNow < 1000000000000 and eNow >= 1000000000 then
  231.             draw_text_lr(mon, 2, 4, 0, format_int((math.floor(eNow/1000000))/1000) .. " B rf", ePercent .. " %", colors.lightGray, energyColor, colors.black)
  232.         elseif eNow < 1000000000 and eNow >= 1000000 then
  233.             draw_text_lr(mon, 2, 4, 0, format_int((math.floor(eNow/1000))/1000) .. " M rf", ePercent .. " %", colors.lightGray, energyColor, colors.black)
  234.         else
  235.             draw_text_lr(mon, 2, 4, 0, format_int(eNow) .. " rf", ePercent .. " %", colors.lightGray, energyColor, colors.black)
  236.         end    
  237.  
  238.         progress_bar(mon, 2, 5, mon.X-2, ePercent, 100, energyColor, colors.gray)
  239.  
  240.         draw_text(mon, 28, 6, "*", colors.gray, colors.black)
  241.         if eFlowOption == 1 then
  242.             draw_text_right(mon, 0, 6, format_int(eFlow) .. "    *", colors.gray, colors.black)
  243.         end
  244.  
  245.         local energyUpDown
  246.         if eFlow > 0 then energyUpDown = colors.lime end
  247.         if eFlow == 0 then energyUpDown = colors.gray end
  248.         if eFlow < 0 then energyUpDown = colors.red end
  249.  
  250.         if eFlow >= math.abs(1000000000) then
  251.             if eFlow > 0 then
  252.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", "+" .. format_int((math.floor(eFlow/1000000))/1000) .. " B rf/t", colors.white, energyUpDown, colors.black)
  253.             else
  254.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", format_int((math.floor(eFlow/1000000))/1000) .. " B rf/t", colors.white, energyUpDown, colors.black)
  255.             end
  256.         elseif eFlow < math.abs(1000000000) and eFlow >= math.abs(1000000) then
  257.             if eFlow > 0 then
  258.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", "+" .. format_int((math.floor(eFlow/1000))/1000) .. " M rf/t", colors.white, energyUpDown, colors.black)
  259.             else
  260.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", format_int((math.floor(eFlow/1000))/1000) .. " M rf/t", colors.white, energyUpDown, colors.black)
  261.             end
  262.         else
  263.             if eFlow > 0 then
  264.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", "+" .. format_int(eFlow) .. " rf/t", colors.white, energyUpDown, colors.black)
  265.             else
  266.                 draw_text_lr(mon, 2, 7, 0, "Energy Flow", format_int(eFlow) .. " rf/t", colors.white, energyUpDown, colors.black)
  267.             end
  268.         end
  269.  
  270.         draw_text(mon, 2, 9, "UU Blocks Power control", colors.purple, colors.black)
  271.        
  272.         draw_text(mon, 3, 10, "UU1 ", colors.white, colors.gray)
  273.         draw_text(mon, 3, 12, "UU2 ", colors.white, colors.gray)
  274.         draw_text(mon, 3, 14, "UU3 ", colors.white, colors.gray)
  275.         draw_text(mon, 12, 10, "UU4 ", colors.white, colors.gray)
  276.         draw_text(mon, 12, 12, "UU5 ", colors.white, colors.gray)
  277.         draw_text(mon, 12, 14, "UU6 ", colors.white, colors.gray)
  278.         draw_text(mon, 21, 10, "RCC ", colors.white, colors.gray)
  279.         draw_text(mon, 21, 12, "RPL ", colors.white, colors.gray)
  280.  
  281.         if blockTweak == 1 then
  282.             draw_text_right(mon, 0, 9, "AU", colors.white, colors.gray)
  283.             if ePercent > 45 then gateRepl.setSignalLowFlow(6000000) end
  284.             if ePercent > 50 then gateRecl.setSignalLowFlow(6000000) end
  285.             if ePercent > 55 then gateBlock1.setSignalLowFlow(6000000) end
  286.             if ePercent > 60 then gateBlock2.setSignalLowFlow(6000000) end
  287.             if ePercent > 65 then gateBlock3.setSignalLowFlow(6000000) end
  288.             if ePercent > 70 then gateBlock4.setSignalLowFlow(6000000) end
  289.             if ePercent > 75 then gateBlock5.setSignalLowFlow(6000000) end
  290.             if ePercent > 80 then gateBlock6.setSignalLowFlow(6000000) end
  291.            
  292.             if ePercent < 40 then gateRepl.setSignalLowFlow(0) end
  293.             if ePercent < 45 then gateRecl.setSignalLowFlow(0) end
  294.             if ePercent < 50 then gateBlock1.setSignalLowFlow(0) end
  295.             if ePercent < 55 then gateBlock2.setSignalLowFlow(0) end
  296.             if ePercent < 60 then gateBlock3.setSignalLowFlow(0) end
  297.             if ePercent < 65 then gateBlock4.setSignalLowFlow(0) end
  298.             if ePercent < 70 then gateBlock5.setSignalLowFlow(0) end
  299.             if ePercent < 75 then gateBlock6.setSignalLowFlow(0) end
  300.            
  301.             if gateRepl.getSignalLowFlow() > 0 then
  302.                 draw_text(mon, 25, 12, " ON", colors.lime, colors.gray)
  303.             else
  304.                 draw_text(mon, 25, 12, "OFF", colors.red, colors.gray)
  305.             end
  306.             if gateRecl.getSignalLowFlow() > 0 then
  307.                 draw_text(mon, 25, 10, " ON", colors.lime, colors.gray)
  308.             else
  309.                 draw_text(mon, 25, 10, "OFF", colors.red, colors.gray)
  310.             end
  311.             if gateBlock1.getSignalLowFlow() > 0 then
  312.                 draw_text(mon, 7, 10, " ON", colors.lime, colors.gray)
  313.             else
  314.                 draw_text(mon, 7, 10, "OFF", colors.red, colors.gray)
  315.             end
  316.             if gateBlock2.getSignalLowFlow() > 0 then
  317.                 draw_text(mon, 7, 12, " ON", colors.lime, colors.gray)
  318.             else
  319.                 draw_text(mon, 7, 12, "OFF", colors.red, colors.gray)
  320.             end
  321.             if gateBlock3.getSignalLowFlow() > 0 then
  322.                 draw_text(mon, 7, 14, " ON", colors.lime, colors.gray)
  323.             else
  324.                 draw_text(mon, 7, 14, "OFF", colors.red, colors.gray)
  325.             end
  326.             if gateBlock4.getSignalLowFlow() > 0 then
  327.                 draw_text(mon, 16, 10, " ON", colors.lime, colors.gray)
  328.             else
  329.                 draw_text(mon, 16, 10, "OFF", colors.red, colors.gray)
  330.             end
  331.             if gateBlock5.getSignalLowFlow() > 0 then
  332.                 draw_text(mon, 16, 12, " ON", colors.lime, colors.gray)
  333.             else
  334.                 draw_text(mon, 16, 12, "OFF", colors.red, colors.gray)
  335.             end
  336.             if gateBlock6.getSignalLowFlow() > 0 then
  337.                 draw_text(mon, 16, 14, " ON", colors.lime, colors.gray)
  338.             else
  339.                 draw_text(mon, 16, 14, "OFF", colors.red, colors.gray)
  340.             end
  341.  
  342.         else
  343.             draw_text_right(mon, 0, 9, "MA", colors.white, colors.gray)
  344.             if gateRepl.getSignalLowFlow() > 0 then
  345.                 draw_text(mon, 25, 12, " ON", colors.white, colors.green)
  346.             else
  347.                 draw_text(mon, 25, 12, "OFF", colors.white, colors.red)
  348.             end
  349.             if gateRecl.getSignalLowFlow() > 0 then
  350.                 draw_text(mon, 25, 10, " ON", colors.white, colors.green)
  351.             else
  352.                 draw_text(mon, 25, 10, "OFF", colors.white, colors.red)
  353.             end
  354.             if gateBlock1.getSignalLowFlow() > 0 then
  355.                 draw_text(mon, 7, 10, " ON", colors.white, colors.green)
  356.             else
  357.                 draw_text(mon, 7, 10, "OFF", colors.white, colors.red)
  358.             end
  359.             if gateBlock2.getSignalLowFlow() > 0 then
  360.                 draw_text(mon, 7, 12, " ON", colors.white, colors.green)
  361.             else
  362.                 draw_text(mon, 7, 12, "OFF", colors.white, colors.red)
  363.             end
  364.             if gateBlock3.getSignalLowFlow() > 0 then
  365.                 draw_text(mon, 7, 14, " ON", colors.white, colors.green)
  366.             else
  367.                 draw_text(mon, 7, 14, "OFF", colors.white, colors.red)
  368.             end
  369.             if gateBlock4.getSignalLowFlow() > 0 then
  370.                 draw_text(mon, 16, 10, " ON", colors.white, colors.green)
  371.             else
  372.                 draw_text(mon, 16, 10, "OFF", colors.white, colors.red)
  373.             end
  374.             if gateBlock5.getSignalLowFlow() > 0 then
  375.                 draw_text(mon, 16, 12, " ON", colors.white, colors.green)
  376.             else
  377.                 draw_text(mon, 16, 12, "OFF", colors.white, colors.red)
  378.             end
  379.             if gateBlock6.getSignalLowFlow() > 0 then
  380.                 draw_text(mon, 16, 14, " ON", colors.white, colors.green)
  381.             else
  382.                 draw_text(mon, 16, 14, "OFF", colors.white, colors.red)
  383.             end
  384.         end
  385.  
  386.         draw_text(mon, 2, 16, "Energy ExtraOUT", colors.yellow, colors.black)
  387.         draw_text_lr(mon, 2, 17, 0, "MaxFlow", format_int(gateExtra.getSignalLowFlow()) .. " rf/t", colors.lightGray, colors.lightGray, colors.black)
  388.         drawButtons(18)
  389.  
  390.         sleep(0.1)
  391.     end
  392. end
  393.  
  394. parallel.waitForAny(buttons, update)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement