Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local os = require("os")
- local computer = require("computer")
- local term = require("term")
- local filesystem = require("filesystem")
- local component = require("component")
- local keyboard = require("keyboard")
- local event = require("event")
- local gpu = component.gpu
- local event = require("event")
- local redstone = component.redstone
- local inputTank = "c89c0a34-3fad-4d82-a873-a4b2f34c60d2"
- ---------colors-----------
- --------------------------
- --======================--
- --------------------------
- ---------colors-----------
- colors_white = 0xffffff
- colors_orange = 0xff6600
- colors_magenta = 0xff00ff
- colors_lightblue = 0x0099ff
- colors_yellow = 0xffff00
- colors_lime = 0x00ff00
- colors_pink = 0xff3399
- colors_gray = 0x737373
- colors_lightgray = 0xa5a5a5
- colors_silver = 0xc0c0c0
- colors_cyan = 0x169c9d
- colors_purple = 0x8932b7
- colors_blue = 0x3c44a9
- colors_brown = 0x825432
- colors_green = 0x5d7c15
- colors_red = 0xb02e26
- colors_lightred = 0xffcccb
- colors_lightorange = 0xbd8817
- colors_black = 0x000000
- ---------colors-----------
- --------------------------
- --======================--
- --------------------------
- ---------colors-----------
- function setBgColor (color)
- gpu.setBackground(color)
- end
- function setFgColor (color)
- gpu.setForeground(color)
- end
- function renderLine(posX, posY, sizeX, sizeY)
- gpu.fill(posX, posY, sizeX, sizeY, " ")
- end
- function setCursorPos (posX, posY)
- term.setCursor(posX, posY)
- end
- function renderText(text)
- term.write(text)
- end
- function draw_ProgressBar(orientation, posX, posY, sizeX, sizeY, maxVAlue, value, bgColor, barColor, showValue)
- if orientation == 1 then
- local a = sizeX*(value / maxVAlue)
- local aa = value.."/"..maxVAlue
- local aaa = string.len(aa)
- if showValue == true then
- setBgColor(bgColor)
- renderLine(posX-1, posY-1, sizeX+2, sizeY+2)
- setBgColor(colors_lightgray)
- renderLine(posX, posY, sizeX, sizeY)
- setBgColor(barColor)
- renderLine(posX, posY, math.floor(a), sizeY)
- setCursorPos( posX+(sizeX/2)-aaa/2, posY+sizeY+1)
- setBgColor(bgColor)
- setFgColor(colors_lime)
- renderText( aa)
- else
- setBgColor(bgColor)
- renderLine(posX-1, posY-1, sizeX+2, sizeY+2)
- setBgColor(barColor)
- renderLine(posX, posY, math.floor(a), sizeY)
- end
- else
- local a = sizeY*(value / maxVAlue)
- local aa = value.."/"..maxVAlue
- local aaa = string.len(aa)
- if showValue == true then
- setBgColor(bgColor)
- renderLine(posX-1, posY-1, sizeX+2, sizeY+2)
- setBgColor(colors_lightgray)
- renderLine(posX, posY, sizeX, sizeY)
- setBgColor(barColor)
- renderLine(posX, posY+sizeY-math.floor(a), sizeX, math.floor(a))
- setCursorPos( posX+(sizeX/2)-aaa/2, posY+sizeY+1)
- setBgColor(bgColor)
- setFgColor(colors_lime)
- renderText( aa)
- else
- setBgColor(bgColor)
- renderLine(posX-1, posY-1, sizeX+2, sizeY+2)
- setBgColor(barColor)
- renderLine(posX, posY+sizeY-math.floor(a), sizeX, math.floor(a))
- end
- end
- end
- function getTank(tank,side)
- fluidTank = component.proxy(tank)
- fluid = fluidTank.getFluidInTank(side)
- return fluid
- end
- function newTank (address, posX, posY, sizeX, sizeY, side, tanktable)
- tank = {}
- tank.address = address
- tank.posX = posX
- tank.posY = posY
- tank.sizeX = sizeX
- tank.sizeY = sizeY
- tank.side = side
- table.insert(tanktable, tank)
- end
- function tankLevels(fluidAmount, fluidName, fluidTemp, posX, posY)
- if fluidName == "crude oil" then
- BgColor = colors_black
- elseif fluidName == "light fuel" or fluidName == "mixed fuels" or fluidName == "gaseous fuel" then
- BgColor = colors_yellow
- elseif fluidName == "distilled oil" then
- BgColor = colors_lightorange
- elseif fluidName == "dense fuel" then
- BgColor = colors_orange
- elseif fluidName == "residue" then
- BgColor = colors_purple
- end
- if fluidTemp == "cool" then
- tempColor = colors_cyan
- elseif fluidTemp == "hot" then
- tempColor = colors_lightred
- elseif fluidTemp == "searing" then
- tempColor = colors_red
- end
- if fluidAmount <= 7920 then
- setCursorPos(posX+15/2-string.len(fluidTemp)/2, posY+3)
- setBgColor(colors_lightgray)
- setFgColor(tempColor)
- renderText(fluidTemp)
- setCursorPos(posX+15/2-string.len(fluidName)/2, posY+4)
- setBgColor(colors_lightgray)
- setFgColor(tempColor)
- renderText(fluidName)
- elseif fluidAmount >= 8000 and fluidAmount < 10000 then
- setCursorPos(posX+15/2-string.len(fluidTemp)/2, posY+3)
- setBgColor(colors_lightgray)
- setFgColor(tempColor)
- renderText(fluidTemp)
- setCursorPos(posX+15/2-string.len(fluidName)/2, posY+4)
- setBgColor(BgColor)
- setFgColor(tempColor)
- renderText(fluidName)
- elseif fluidAmount >= 10000 then
- setCursorPos(posX+15/2-string.len(fluidTemp)/2, posY+3)
- setBgColor(BgColor)
- setFgColor(tempColor)
- renderText(fluidTemp)
- setCursorPos(posX+15/2-string.len(fluidName)/2, posY+4)
- setBgColor(BgColor)
- setFgColor(tempColor)
- renderText(fluidName)
- end
- end
- function renderATank(posX, posY, sizeX, sizeY, tank, side)
- tankFluid = getTank(tank, side)
- if tankFluid[1].amount >=1 then
- if tankFluid[1].name == "oil" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_black, true)
- tankLevels(tankFluid[1].amount, "crude oil", "cool", posX, posY)
- elseif tankFluid[1].name == "oil_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_black, true)
- tankLevels(tankFluid[1].amount, "crude oil", "hot", posX, posY)
- elseif tankFluid[1].name == "oil_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_black, true)
- tankLevels(tankFluid[1].amount, "crude oil", "searing", posX, posY)
- elseif tankFluid[1].name == "oil_distilled" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_lightorange, true)
- tankLevels(tankFluid[1].amount, "distilled oil", "cool", posX, posY)
- elseif tankFluid[1].name == "oil_distilled_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_lightorange, true)
- tankLevels(tankFluid[1].amount, "distilled oil", "hot", posX, posY)
- elseif tankFluid[1].name == "oil_distilled_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_lightorange, true)
- tankLevels(tankFluid[1].amount, "distilled oil", "searing", posX, posY)
- elseif tankFluid[1].name == "fuel_light" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "light fuel", "cool", posX, posY)
- elseif tankFluid[1].name == "fuel_light_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "light fuel", "hot", posX, posY)
- elseif tankFluid[1].name == "fuel_light_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "light fuel", "searing", posX, posY)
- elseif tankFluid[1].name == "fuel_mixed_light" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "mixed fuels", "cool", posX, posY)
- elseif tankFluid[1].name == "fuel_mixed_light_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "mixed fuels", "hot", posX, posY)
- elseif tankFluid[1].name == "fuel_mixed_light_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "mixed fuels", "searing", posX, posY)
- elseif tankFluid[1].name == "fuel_dense" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_orange, true)
- tankLevels(tankFluid[1].amount, "dense fuel", "cool", posX, posY)
- elseif tankFluid[1].name == "fuel_dense_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_orange, true)
- tankLevels(tankFluid[1].amount, "dense fuel", "hot", posX, posY)
- elseif tankFluid[1].name == "fuel_dense_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_orange, true)
- tankLevels(tankFluid[1].amount, "dense fuel", "searing", posX, posY)
- elseif tankFluid[1].name == "fuel_gaseous" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "gaseous fuel", "cool", posX, posY)
- elseif tankFluid[1].name == "fuel_gaseous_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "gaseous fuel", "hot", posX, posY)
- elseif tankFluid[1].name == "fuel_gaseous_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_yellow, true)
- tankLevels(tankFluid[1].amount, "gaseous fuel", "searing", posX, posY)
- elseif tankFluid[1].name == "oil_residue" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_purple, true)
- tankLevels(tankFluid[1].amount, "residue", "cool", posX, posY)
- elseif tankFluid[1].name == "oil_residue_heat_1" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_purple, true)
- tankLevels(tankFluid[1].amount, "residue", "hot", posX, posY)
- elseif tankFluid[1].name == "oil_residue_heat_2" then
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].amount, colors_gray, colors_purple, true)
- tankLevels(tankFluid[1].amount, "residue", "searing", posX, posY)
- end
- else
- draw_ProgressBar(0, posX, posY, sizeX, sizeY, tankFluid[1].capacity, tankFluid[1].capacity, colors_gray, colors_lightgray, true)
- setCursorPos(posX+15/2-string.len("EMPTY")/2, posY+3)
- setBgColor(colors_lightgray)
- setFgColor(colors_black)
- renderText("EMPTY")
- end
- end
- function drawTanks()
- for i = 1, #fluidTanks do
- renderATank(fluidTanks[i].posX, fluidTanks[i].posY, fluidTanks[i].sizeX, fluidTanks[i].sizeY, fluidTanks[i].address, fluidTanks[i].side)
- end
- end
- function newPipe(posX, posY, sizeX, sizeY, fluidColor, pipesTable)
- local pipe = {}
- pipe.posX = posX
- pipe.posY = posY
- pipe.sizeX = sizeX
- pipe.sizeY = sizeY
- pipe.fluidColor = fluidColor
- table.insert(pipesTable, pipe)
- end
- function drawPipes(pipeTable)
- for i = 1, #pipeTable do
- setBgColor(pipeTable[i].fluidColor)
- renderLine(pipeTable[i].posX, pipeTable[i].posY, pipeTable[i].sizeX, pipeTable[i].sizeY)
- end
- end
- function drawValves()
- for i = 1, #valves do
- if valves[i].orientation == 0 then
- if valves[i].state == true then
- setBgColor(colors_silver)
- renderLine(valves[i].posX, valves[i].posY, 3, 1)
- setBgColor(valves[i].fluidColor)
- renderLine(valves[i].posX+1, valves[i].posY, 1, 1)
- else
- setBgColor(colors_silver)
- renderLine(valves[i].posX, valves[i].posY, 3, 1)
- end
- elseif valves[i].orientation == 1 then
- if valves[i].state == true then
- setBgColor(colors_silver)
- renderLine(valves[i].posX, valves[i].posY, 2, 3)
- setBgColor(valves[i].fluidColor)
- renderLine(valves[i].posX, valves[i].posY+1, 2, 1)
- else
- setBgColor(colors_silver)
- renderLine(valves[i].posX, valves[i].posY, 2, 3)
- end
- end
- end
- end
- function newValve(orientation, posX, posY, state, fluidColor, valveTable)
- local valve = {}
- valve.orientation = orientation
- valve.posX = posX
- valve.posY = posY
- valve.state = state
- valve.fluidColor = fluidColor
- table.insert(valveTable, valve)
- end
- function init_Valves()
- valves = {}
- end
- function drawPipeJumpers()
- for i = 1, #pipeJumpers do
- if pipeJumpers[i].orientation == 0 then
- setBgColor(pipeJumpers[i].fluidColor)
- renderLine(pipeJumpers[i].posX-2, pipeJumpers[i].posY, 1, 2)
- renderLine(pipeJumpers[i].posX-1, pipeJumpers[i].posY-2, 1, 5)
- renderLine(pipeJumpers[i].posX+2, pipeJumpers[i].posY, 1, 2)
- end
- end
- end
- function newPipeJumper(orientation, posX, posY, fluidColor, jumperTable)
- pipeJumper = {}
- pipeJumper.orientation = orientation
- pipeJumper.posX = posX
- pipeJumper.posY = posY
- pipeJumper.fluidColor = fluidColor
- table.insert(jumperTable, pipeJumper)
- end
- function initPipe_Jumpers()
- pipeJumpers = {}
- end
- function initPipe_inputToBuffer_01()
- pipes_inputToBuffer_01 = {}
- newPipe(18, 17, 1, 4, colors_gray, pipes_inputToBuffer_01)
- newPipe(18, 17, 58, 1, colors_gray, pipes_inputToBuffer_01)
- newPipe(75, 14, 1, 4, colors_gray, pipes_inputToBuffer_01)
- newValve(0, 17, 19, false, colors_gray, valves)
- end
- function initPipe_buffer_01_ToHeatExchanger_01()
- buffer_01_ToHeatExchanger_01 = {}
- newPipe(149, 14, 1, 11, colors_gray, buffer_01_ToHeatExchanger_01)
- newPipe(144, 24, 5, 1, colors_gray, buffer_01_ToHeatExchanger_01)
- newValve(0, 148, 16, false, colors_gray, valves)
- end
- function initPipe_heatExchanger_01_toBuffer_02()
- heatExchanger_01_toBuffer_02 = {}
- newPipe(119, 14, 1, 11, colors_gray, heatExchanger_01_toBuffer_02)
- newPipe(120, 24, 5, 1, colors_gray, heatExchanger_01_toBuffer_02)
- end
- function initPipe_heatExchanger_01_toBuffer_05()
- heatExchanger_01_toBuffer_05 = {}
- newPipe(149, 26, 1, 11, colors_gray, heatExchanger_01_toBuffer_05)
- newPipe(144, 26, 5, 1, colors_gray, heatExchanger_01_toBuffer_05)
- end
- function initPipe_buffer_04_toHeatExchanger_01()
- buffer_04_toHeatExchanger_01 = {}
- newPipe(119, 26, 1, 11, colors_gray, buffer_04_toHeatExchanger_01)
- newPipe(120, 26, 5, 1, colors_gray, buffer_04_toHeatExchanger_01)
- newValve(0, 148, 35, false, colors_gray, valves)
- end
- function initPipe_buffer_01_toRefinery_01()
- buffer_01_toRefinery_01 = {}
- newPipe(105, 14, 1, 10, colors_gray, buffer_01_toRefinery_01)
- end
- function initPipe_refinery_01_tobuffer_04()
- refinery_01_tobuffer_04 = {}
- newPipe(96, 28, 3, 1, colors_gray, refinery_01_tobuffer_04)
- newPipe(95, 28, 1, 7, colors_gray, refinery_01_tobuffer_04)
- newPipe(96, 28+6, 40, 1, colors_gray, refinery_01_tobuffer_04)
- newPipe(96+40, 28+6, 1, 3, colors_gray, refinery_01_tobuffer_04)
- end
- function init_pipingOverlay()
- pipes = {}
- init_Valves()
- initPipe_Jumpers()
- initPipe_inputToBuffer_01()
- initPipe_buffer_01_ToHeatExchanger_01()
- initPipe_heatExchanger_01_toBuffer_05()
- initPipe_buffer_04_toHeatExchanger_01()
- initPipe_heatExchanger_01_toBuffer_02()
- initPipe_buffer_01_toRefinery_01()
- initPipe_refinery_01_tobuffer_04()
- end
- function init_heatExangers()
- heatExanger01PosX = 125
- heatExanger01PosY = 23
- heatExanger02PosX = 68
- heatExanger02PosY = 28
- setBgColor(colors_silver)
- renderLine(heatExanger01PosX, heatExanger01PosY, 19, 5)
- setBgColor(colors_red)
- renderLine(heatExanger01PosX, heatExanger01PosY+1, 1, 1)
- renderLine(heatExanger01PosX+18, heatExanger01PosY+3, 1, 1)
- setBgColor(colors_lightred)
- renderLine(heatExanger01PosX, heatExanger01PosY+3, 1, 1)
- renderLine(heatExanger01PosX+18, heatExanger01PosY+1, 1, 1)
- --renderLine(heatExanger02PosX, heatExanger02PosY, 19, 5)
- end
- function init_refineries()
- setBgColor(colors_red)
- renderLine(99, 24, 13, 6)
- setBgColor(colors_lightred)
- renderLine(103, 24, 5, 6)
- setBgColor(colors_cyan)
- renderLine(99, 24, 4, 2)
- renderLine(99+9, 24+4 ,4, 2)
- end
- function init_Main()
- setBgColor(colors_white)
- renderLine(1, 1, 160, 50)
- hotOilTankPosX = 135
- hotOilTankPosY = 5
- fluidTanks = {}
- --BUFFER TANK 01 (hot oil)
- newTank ("751c5e2b-3784-46bb-9d1d-1d07cf01b2cb", hotOilTankPosX, hotOilTankPosY, 15, 8, 1, fluidTanks)
- --BUFFER TANK 02 (searing oil)
- newTank ("a69eabd3-f80a-4a4b-85b8-e774b66976f3", 105, 5, 15, 8, 1, fluidTanks)
- --BUFFER TANK 03(cool oil)
- newTank ("53f1996f-f1b4-43a7-85f2-fa5750b99a12", 75, 5, 15, 8, 1, fluidTanks)
- --BUFFER TANK 04(searing distiled oil)
- newTank ("2c8c235e-c34c-458e-bf78-a4eb49c80f24", 135, 38, 15, 8, 1, fluidTanks)
- --BUFFER TANK 05(hot distilled oil)
- newTank ("47cbbf22-1fc9-4c33-b063-32a6fc894053", 105, 38, 15, 8, 1, fluidTanks)
- --BUFFER TANK 06(cool mixed light fuel)
- newTank ("0ee0cc88-3b0d-402a-a84a-a3b19d4d19b0", 25, 22, 15, 8, 1, fluidTanks)
- --OUTPUT TANK 01
- newTank ("a4f7b681-07dd-42a7-84db-df4809584d2d", 25, 5, 15, 8, 1, fluidTanks)
- --OUTPUT TANK 02
- newTank("97445f98-9b44-4e16-b6d1-ac6183175893", 5, 5, 15, 8, 1, fluidTanks)
- --OUTPUT TANK 03
- newTank("97445f98-9b44-4e16-b6d1-ac6183175893", 5, 38, 15, 8, 0, fluidTanks)
- --OUTPUT TANK 04
- newTank ("a4f7b681-07dd-42a7-84db-df4809584d2d", 25, 38, 15, 8, 0, fluidTanks)
- --INPUT TANK
- newTank ("a4f7b681-07dd-42a7-84db-df4809584d2d", 5, 22, 15, 8, 4, fluidTanks)
- init_heatExangers()
- init_refineries()
- init_pipingOverlay()
- drawPipes(pipes_inputToBuffer_01)
- drawPipes(buffer_01_ToHeatExchanger_01)
- drawPipes(heatExchanger_01_toBuffer_02)
- drawPipes(buffer_01_toRefinery_01)
- drawPipes(heatExchanger_01_toBuffer_05)
- drawPipes(refinery_01_tobuffer_04)
- drawValves()
- drawTanks()
- end
- term.clear()
- redstone.setBundledOutput(3, 0, 254)
- redstone.setBundledOutput(3, 1, 0)
- init_Main()
- while true do
- os.sleep(0.0)
- drawTanks()
- end
- --[[
- results:
- https://media.discordapp.net/attachments/946583581067739176/1067621386530603018/image.png?width=1232&height=619
- https://media.discordapp.net/attachments/946583581067739176/1067621386966798406/image.png?width=1422&height=702
- --]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement