krezi1212123

OC BigReactors turbine

May 7th, 2016
2,602
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local term = require("term")
  2. local component = require("component")
  3. local computer = require("computer")
  4. local math = require("math")
  5. local event = require("event")
  6. local string = require("string")
  7. local unicode = require("unicode")
  8. local os = require("os")
  9. local fs = require('filesystem')
  10. local gpu = component.gpu
  11. gpu.setResolution(100,50)
  12. br = component.getPrimary("br_turbine")
  13. tur = component.br_turbine
  14. local maxgetsteam = 2000
  15. local mingetsteam = 0
  16. local steam = 2000
  17. local rate = tur.getFluidFlowRateMax()
  18. local speed = 0
  19. local block = 1
  20. local block2 = 1
  21. local eng23 = 0
  22.  
  23.  
  24. local function sig(a)
  25.  return math.floor(a)
  26. end
  27.  
  28. local function englimit()
  29.   if br.getEnergyStored() >= eng23 then
  30.     br.setInductorEngaged(false)  
  31.   elseif br.getEnergyStored() < eng23 then
  32.     br.setInductorEngaged(true)
  33. end
  34. end
  35.  
  36. local function speedlimit()
  37.    if br.getRotorSpeed() < speed then
  38.     tur.setFluidFlowRateMax(maxgetsteam)
  39.    elseif br.getRotorSpeed() > speed then
  40.     tur.setFluidFlowRateMax(mingetsteam)
  41.  end
  42.  end
  43.  
  44. local function loadbar(x,y,width,cur,text,bg,fg)
  45.   local raw = " " .. text ..string.rep(" ", width - unicode.len(text) - 2) .. " "
  46.   local oldbg = gpu.setBackground(bg)
  47.   local oldfg = gpu.setForeground(fg)
  48.   gpu.set(x,y,unicode.sub(raw,1,cur))
  49.   gpu.setBackground(oldbg)
  50.   gpu.setForeground(oldfg)
  51.   gpu.set(x+cur,y,unicode.sub(raw,cur+1,width))
  52. end
  53.  
  54. local function setColor(bg,fg)
  55.   gpu.setBackground(bg)
  56.   gpu.setForeground(fg)
  57. end
  58.  
  59. local function bargraph(x,y,length,am,cap,na,col,colpol)
  60.   local amount = am
  61.   local capacity = cap
  62.   local pct = amount / capacity
  63.   local cur = math.floor(pct * length)
  64.   local color = col
  65.   local color2 = colpol
  66.   local name = na
  67.   local textfrac = string.format("%s / %s", amount, capacity)
  68.   local textpct = string.format("%.02f%%", pct*100)
  69.   local text = textfrac .. string.rep(" ", length - string.len(textfrac) - string.len(textpct) - 6) .. "   " .. textpct .. " "
  70.   local text1 = "              Уровень заполнения : ("..name..")"
  71.   loadbar(x,y,length,cur,text1,color,color2)
  72.   loadbar(x,y+1,length,cur,text,color,color2)
  73. end
  74.  
  75. local function drawbars()
  76.   amFuel = br.getInputAmount()
  77.   capFuel = 4000
  78.   naFuel = "ПАР"
  79.   colFuel = 0xFFFF00
  80.   colpolFuel = 0x0000FF
  81.   bargraph(2,13,98,amFuel,capFuel,naFuel,colFuel,colpolFuel)
  82.   amWaste = br.getOutputAmount()
  83.   capWaste = 4000
  84.   naWaste = "ВОДА"
  85.   colWaste = 0x00FFFF
  86.   colpolWaste = 0xFF00FF
  87.   bargraph(2,16,98,amWaste,capWaste,naWaste,colWaste,colpolWaste)
  88.   amSteam = br.getRotorSpeed()
  89.   capSteam = 3000
  90.   naSteam = "СКОРОСТЬ РОТОРА"
  91.   colSteam = 0x8F8F8F
  92.   colpolSteam = 0xFFFF00
  93.   bargraph(2,19,98,amSteam,capSteam,naSteam,colSteam,colpolSteam)
  94.   amWater = br.getEnergyStored()
  95.   capWater = 1000000
  96.   naWater = "НАКОПЛЕННАЯ ЭНЕРГИЯ"
  97.   colWater = 0x71b6cb
  98.   colpolWater = 0x0000FF
  99.   bargraph(2,22,98,amWater,capWater,naWater,colWater,colpolWater)
  100.   en = tur.getEnergyProducedLastTick()
  101.   en2 = en * 20
  102.   en3 = en2 * 60
  103.   en4 = en3 * 60
  104.   gpu.set(3,43,string.format("%10f",sig(en)))
  105.   gpu.set(25,43,string.format("%10f",sig(en2)))
  106.   gpu.set(49,43,string.format("%10f",sig(en3)))
  107.   gpu.set(74,43,string.format("%10f",sig(en4)))
  108.   amstel = tur.getFluidFlowRate()
  109.   gpu.set(19,33, string.format("%10d", speed))
  110.   gpu.set(64,32, string.format("%10d", eng23))
  111.    if block == 2 then
  112.     speedlimit()
  113.     gpu.set(13,6, "         ")
  114.    elseif block == 2 then
  115.     tur.setFluidFlowRateMax(steam)
  116.     gpu.set(13,6, string.format("%10d",steam))
  117.    end
  118.    if block2 == 2 then
  119.     englimit()
  120.    end
  121. end
  122.  
  123. local function work(h,m)
  124.   gpu.set(h,m,"            ")
  125. gpu.set(h,m+1,"  ВКЛЮЧИТЬ  ")
  126. gpu.set(h,m+2,"            ")
  127. end
  128.  
  129. local function nwork(h,m)
  130.   gpu.set(h,m,"            ")
  131. gpu.set(h,m+1," ВЫКЛЮЧИТЬ  ")
  132. gpu.set(h,m+2,"            ")
  133. end
  134.  
  135. local function POWER()
  136.      local ON = br.getActive()
  137.         if ON == true then
  138.           setColor(0x00FF00,0x000000)
  139.           work(87,2)
  140.           setColor(0x000000,0xFF0000)
  141.           nwork(87,6)
  142.           setColor(0x000000,0xFFFFFF)
  143.         elseif ON == false then
  144.           setColor(0x000000,0x00FF00)
  145.           work(87,2)
  146.           setColor(0xFF0000,0xFFFFFF)
  147.           nwork(87,6)
  148.           setColor(0x000000,0xFFFFFF)
  149.       end
  150.  
  151. end
  152.  
  153. local function INGUCKTOR()
  154.      local ONLINE = br.getInductorEngaged()
  155.         if ONLINE == true then
  156.           setColor(0x00FF00,0x000000)
  157.           work(55,2)
  158.           setColor(0x000000,0xFF0000)
  159.           nwork(55,6)
  160.           setColor(0x000000,0xFFFFFF)
  161.         elseif ONLINE == false then
  162.           setColor(0x000000,0x00FF00)
  163.           work(55,2)
  164.           setColor(0xFF0000,0xFFFFFF)
  165.           nwork(55,6)
  166.           setColor(0x000000,0xFFFFFF)
  167.       end
  168.  
  169. end
  170.  
  171. local function SPEEDINDICATOR()
  172.         if block == 2 then
  173.           setColor(0x00FF00,0x000000)
  174.           work(33,28)
  175.           setColor(0x000000,0xFF0000)
  176.           nwork(3,28)
  177.           setColor(0x000000,0xFFFFFF)
  178.         elseif block == 1 then
  179.           setColor(0x000000,0x00FF00)
  180.           work(33,28)
  181.           setColor(0xFF0000,0xFFFFFF)
  182.           nwork(3,28)
  183.           setColor(0x000000,0xFFFFFF)
  184.       end
  185. end
  186.  
  187. local function ENGINDICATOR()
  188.         if block2 == 2 then
  189.           setColor(0x00FF00,0x000000)
  190.           work(78,28)
  191.           setColor(0x000000,0xFF0000)
  192.           nwork(48,28)
  193.           setColor(0x000000,0xFFFFFF)
  194.         elseif block2 == 1 then
  195.           setColor(0x000000,0x00FF00)
  196.           work(78,28)
  197.           setColor(0xFF0000,0xFFFFFF)
  198.           nwork(48,28)
  199.           setColor(0x000000,0xFFFFFF)
  200.       end
  201. end
  202.  
  203. term.clear()
  204.  gpu.set(1,1,"╔══════════════════════════════════╦════════════════╦══════════════╦════════════════╦══════════════╗")
  205.  gpu.set(1,2,"║                                  ║                ║ ████████████ ║                ║ ████████████ ║")
  206.  gpu.set(1,3,"║                                  ║                ║ █ ВКЛЮЧИТЬ █ ║                ║ █ ВКЛЮЧИТЬ █ ║")
  207.  gpu.set(1,4,"║                                  ║ УПРАВЛЕНИЕ     ║ ████████████ ║ УПРАВЛЕНИЕ     ║ ████████████ ║")
  208.  gpu.set(1,5,"║                                  ║             -->╠══════════════╣             -->╠══════════════╣")
  209.  gpu.set(1,6,"║                                  ║ КАТУШКАМИ      ║ ████████████ ║  ТУРБИНОЙ      ║ ████████████ ║")
  210.  gpu.set(1,7,"║                                  ║                ║ █ВЫКЛЮЧИТЬ █ ║                ║ █ВЫКЛЮЧИТЬ █ ║")
  211.  gpu.set(1,8,"║                                  ║                ║ ████████████ ║                ║ ████████████ ║")
  212.  gpu.set(1,9,"╠══════════════════════════════════╩════════════════╩══════════════╩════════════════╩══════════════╣")
  213. gpu.set(1,10,"║                                                                                                  ║")
  214. gpu.set(1,11,"║                                                                                                  ║")
  215. gpu.set(1,12,"╠══════════════════════════════════════════════════════════════════════════════════════════════════╣")
  216. gpu.set(1,13,"║                                                                                                  ║")
  217. gpu.set(1,14,"║                                                                                                  ║")
  218. gpu.set(1,15,"╠══════════════════════════════════════════════════════════════════════════════════════════════════╣")
  219. gpu.set(1,16,"║                                                                                                  ║")
  220. gpu.set(1,17,"║                                                                                                  ║")
  221. gpu.set(1,18,"╠══════════════════════════════════════════════════════════════════════════════════════════════════╣")
  222. gpu.set(1,19,"║                                                                                                  ║")
  223. gpu.set(1,20,"║                                                                                                  ║")
  224. gpu.set(1,21,"╠══════════════════════════════════════════════════════════════════════════════════════════════════╣")
  225. gpu.set(1,22,"║                                                                                                  ║")
  226. gpu.set(1,23,"║                                                                                                  ║")
  227. gpu.set(1,24,"╠════════════════════════════════════════════╦════════════════════════════════════════════╦════════╣")
  228. gpu.set(1,25,"║ АВТОМАТИЧЕСКОЕ УПРАВЛЕНИЕ СКОРОСТЬЮ ТУРБИНЫ║ АВТОМАТИЧЕСКОЕ УПРАВЛЕНИЕ ЭНЕРГИЕЙ В       ║        ║")
  229. gpu.set(1,26,"║ (УПРАВЛЕНИЕ ПОДАЧЕЙ ПАРА ОТКЛЮЧИТСЯ)       ║ БАТАРЕИ                                    ║        ║")
  230. gpu.set(1,27,"╠══════════════╦══════════════╦══════════════╣══════════════╦══════════════╦══════════════╣        ║")  
  231. gpu.set(1,28,"║ ████████████ ║              ║ ████████████ ║ ████████████ ║              ║ ████████████ ║        ║")
  232. gpu.set(1,29,"║ █ ВКЛЮЧИТЬ █ ║              ║ █ВЫКЛЮЧИТЬ █ ║ █ ВКЛЮЧИТЬ █ ║              ║ █ВЫКЛЮЧИТЬ █ ║        ║")
  233. gpu.set(1,30,"║ ████████████ ║              ║ ████████████ ║ ████████████ ║              ║ ████████████ ║        ║")
  234. gpu.set(1,31,"╠══════════════╝              ╚══════════════╠══════════════╝              ╚══════════════╣        ║")
  235. gpu.set(1,32,"║    +1000     |              |     -1000    ║    +100000   |              |     -100000  ║        ║")
  236. gpu.set(1,33,"║    +100      |              |     -100     ║    +10000    |              |     -10000   ║        ║")
  237. gpu.set(1,34,"║    +10       |              |     -10      ║    +1000     |              |     -1000    ║        ║")
  238. gpu.set(1,35,"║    +1        |              |     -1       ║    +100      |              |     -100     ║        ║")
  239. gpu.set(1,36,"╠════════════════════════════════════════════╩════════════════════════════════════════════╩════════╣")
  240. gpu.set(1,37,"║ КОЛИЧЕСТВА ВЫРАБАТЫВАЕМОЙ ЭНЕРГИИ ЗА ПРОМЕЖУТОК ВЕМЕНИ                                           ║")
  241. gpu.set(1,38,"╠═════════════════════╦═══════════════════════╦════════════════════════╦═══════════════════════════╣")
  242. gpu.set(1,39,"║ REDSTONEFLUX/TICK   ║ REDSTONEFLUX/SECOND   ║ REDSTONEFLUX/MINUTS    ║ REDSTONEFLUX/HOURSE       ║")
  243. gpu.set(1,40,"║                     ║                       ║                        ║                           ║")
  244. gpu.set(1,41,"║ RF/T                ║ RF/SEC                ║ RF/M                   ║ RF/H                      ║")
  245. gpu.set(1,42,"║                     ║                       ║                        ║                           ║")
  246. gpu.set(1,43,"║                     ║                       ║                        ║                           ║")
  247. gpu.set(1,44,"╠═════════════════════╩═══════════════════════╩════════════════════════╩═══════════════════════════╣")
  248. gpu.set(1,45,"║                                                                                                  ║")
  249. gpu.set(1,46,"║                                                                                                  ║")
  250. gpu.set(1,47,"║                                                                                                  ║")
  251. gpu.set(1,48,"║                                                                                                  ║")
  252. gpu.set(1,49,"║                                                                                                  ║")
  253. gpu.set(1,50,"╚══════════════════════════════════════════════════════════════════════════════════════════════════╝")
  254.  
  255. POWER()
  256. INGUCKTOR()
  257. SPEEDINDICATOR()
  258. ENGINDICATOR()
  259.  
  260. local function onTouch(event,adress,x,y,clic,pseudo)
  261. if x==1 and y==1 then
  262.       computer.pushSignal("quit")
  263.       term.setCursor(1,1)
  264.       return false
  265.      elseif x > 85 and x < 100 and y > 1 and y < 5 then
  266.       br.setActive(true)
  267.       POWER()
  268.      elseif x > 85 and x < 100 and y > 5 and y < 9 then
  269.       br.setActive(false)
  270.       POWER()
  271.      elseif x > 54 and x < 67 and y > 1 and y < 5 then
  272.       br.setInductorEngaged(true)
  273.       INGUCKTOR()
  274.      elseif x > 54 and x < 67 and y > 5 and y < 9 then
  275.       br.setInductorEngaged(false)
  276.       INGUCKTOR()
  277.      elseif x > 2 and x < 15 and y > 28 and y < 30 then
  278.        block = 1
  279.        SPEEDINDICATOR()
  280.      elseif x > 32 and x < 45 and y > 28 and y < 30 then
  281.        block = 2
  282.        SPEEDINDICATOR()
  283.       elseif x > 47 and x < 60 and y > 28 and y < 30 then
  284.        block2 = 1
  285.        ENGINDICATOR()
  286.         br.setInductorEngaged(false)
  287.       INGUCKTOR()
  288.      elseif x > 77 and x < 90 and y > 28 and y < 30 then
  289.        block2 = 2
  290.        ENGINDICATOR()
  291.         br.setInductorEngaged(false)
  292.       INGUCKTOR()
  293.       elseif x > 50 and x < 57 and y == 32 then                       -- скорость +1000
  294.       if eng23 >= 900000 then
  295.        eng23 = 1000000
  296.       else
  297.        eng23 = eng23 + 100000
  298.       end
  299.       gpu.set(64,32, string.format("%10d", eng23))
  300.      elseif x > 50 and x < 57 and y == 33 then                       -- скорость +100
  301.       if eng23 >= 990000 then
  302.        eng23 = 1000000
  303.       else
  304.        eng23 = eng + 10000
  305.       end
  306.       gpu.set(64,32, string.format("%10d", eng23))
  307.      elseif x > 50 and x < 57 and y == 34 then                       -- скорость +10
  308.       if eng23 >= 999000 then
  309.        eng23 = 1000000
  310.       else
  311.        eng23 = eng23 + 1000
  312.       end
  313.       gpu.set(64,32, string.format("%10d", eng23))
  314.      elseif x > 50 and x < 57 and y == 35 then                       -- скорость +1
  315.       if eng23 >= 999900 then
  316.        eng23 = 1000000
  317.       else
  318.        eng23 = eng23 + 100
  319.       end
  320.       gpu.set(64,32, string.format("%10d", eng23))
  321.      elseif x > 80 and x < 87 and y == 32 then                       -- скорость -1000
  322.       if eng23 <= 100000 then
  323.          eng23 = 0
  324.       else
  325.          eng23 = eng23 - 100000  
  326.       end
  327.       gpu.set(64,32, string.format("%10d", eng23))
  328.      elseif x > 80 and x < 87 and y == 33 then                       -- скорость -100
  329.       if eng23 <= 10000 then
  330.          eng23 = 0
  331.       else
  332.          eng23 = eng23 - 10000   
  333.       end
  334.       gpu.set(64,32, string.format("%10d", eng23))
  335.      elseif x > 80 and x < 87 and y == 34 then                       -- скорость -10
  336.       if eng23 <= 1000 then
  337.          eng23 = 0
  338.       else
  339.          eng23 = eng23 - 1000  
  340.       end
  341.       gpu.set(64,32, string.format("%10d", eng23))
  342.      elseif x > 80 and x < 87 and y == 35 then                       -- скорость -1
  343.       if eng23 <= 100 then
  344.          eng23 = 0
  345.       else
  346.          eng23 = eng23 - 100  
  347.       end
  348.       gpu.set(64,32, string.format("%10d", eng23))
  349.      elseif x > 2 and x < 15 and y == 32 then                       -- скорость +1000
  350.       if speed >= 2000 then
  351.        speed = 3000
  352.       else
  353.        speed = speed + 1000
  354.       end
  355.       gpu.set(19,33, string.format("%10d", speed))
  356.      elseif x > 2 and x < 15 and y == 33 then                       -- скорость +100
  357.       if speed >= 2900 then
  358.        speed = 3000
  359.       else
  360.        speed = speed + 100
  361.       end
  362.       gpu.set(19,33, string.format("%10d", speed))
  363.      elseif x > 2 and x < 15 and y == 34 then                       -- скорость +10
  364.       if speed >= 2990 then
  365.        speed = 3000
  366.       else
  367.        speed = speed + 10
  368.       end
  369.       gpu.set(19,33, string.format("%10d", speed))
  370.      elseif x > 2 and x < 15 and y == 35 then                       -- скорость +1
  371.       if speed >= 2999 then
  372.        speed = 3000
  373.       else
  374.        speed = speed + 1
  375.       end
  376.       gpu.set(19,33, string.format("%10d", speed))
  377.      elseif x > 31 and x < 44 and y == 32 then                       -- скорость -1000
  378.       if speed <= 1000 then
  379.          speed = 0
  380.       else
  381.          speed = speed - 1000    
  382.       end
  383.       gpu.set(19,33, string.format("%10d", speed))
  384.      elseif x > 31 and x < 44 and y == 33 then                       -- скорость -100
  385.       if speed <= 100 then
  386.          speed = 0
  387.       else
  388.          speed = speed - 100     
  389.       end
  390.       gpu.set(19,33, string.format("%10d", speed))
  391.      elseif x > 31 and x < 44 and y == 34 then                       -- скорость -10
  392.       if speed <= 10 then
  393.          speed = 0
  394.       else
  395.          speed = speed - 10  
  396.       end
  397.       gpu.set(19,33, string.format("%10d", speed))
  398.      elseif x > 31 and x < 44 and y == 35 then                       -- скорость -1
  399.       if speed <= 1 then
  400.          speed = 0
  401.       else
  402.          speed = speed - 1   
  403.       end
  404.       gpu.set(19,33, string.format("%10d", speed))
  405. end
  406. end
  407.  
  408. local function onTimer(_,timer)
  409.   drawbars()
  410.   return true
  411. end
  412.  
  413. event.listen("touch",onTouch)
  414. local timer = event.timer(0,onTimer,math.huge)
  415. event.pull("quit")
  416. event.cancel(timer)
  417. event.ignore("touch",onTouch)
  418. component.gpu.setResolution(100,50)
  419. term.clear()
RAW Paste Data