Advertisement
JaMaNi133

Smeltery Controller V2

Oct 31st, 2023 (edited)
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.89 KB | None | 0 0
  1. require("SmelteryA")
  2. require("SmelteryB")
  3. require("TankA")
  4. require("TankB")
  5. require("MixerA")
  6. require("void")
  7. require("ValvesA")
  8. require("IngotCast")
  9.  
  10.  
  11. local layer1 = "layer1"
  12.  
  13.  
  14.  
  15.  
  16.  
  17. print(SmelteryA)
  18.  
  19. local updateFreq = 4
  20. local touch = {x=0,y=0,q=false}
  21. mon1 = peripheral.wrap("monitor_1")
  22.  
  23. rednet.open("left")
  24.  
  25. local DirLookupTOP = {NA={      key="X",    Name="NONE" },
  26.                 ValveClosed={   key=string.char(140),   Name="Closed"   },
  27.                 ValveOpen={     key=string.char(23),    Name="Open" },
  28.                 PumpOff={       key=string.char(140),   Name="Off"  },
  29.                 MonoPumpIn={    key=string.char(30),    Name="In"   },
  30.                 MonoPumpOut={   key=string.char(31),    Name="Out"  },
  31.                 PumpIn={        key=string.char(30),    Name="In"   },
  32.                 PumpOut={       key=string.char(31),    Name="Out"  }}
  33.  
  34. function updatePort(port,state)
  35.     local col = port.color
  36.     --print(string.format("col: %d   val: %s   comp: %s", col, tostring(state), port.computer))
  37.     if state == nil then
  38.         return
  39.     end
  40.     onSig = 65536
  41.     if state == port.invert then
  42.         print("disabled")
  43.         onSig = 0
  44.     end
  45.     val = col+onSig
  46.     print(val)
  47.     rednet.send(port.computer,val)
  48.    
  49. end
  50.  
  51.  
  52.  
  53. function updateBus(bus)
  54.     local states = {NA={            p1=nil,     p2=nil  },
  55.                     ValveClosed={   p1=false,   p2=nil  },
  56.                     ValveOpen={     p1=true,    p2=nil  },
  57.                     PumpOff={       p1=true,    p2=nil  },
  58.                     MonoPumpIn={    p1=false,   p2=nil  },
  59.                     MonoPumpOut={   p1=false,   p2=nil  },
  60.                     PumpIn={        p1=false,   p2=false},
  61.                     PumpOut={       p1=false,   p2=true }}
  62.    
  63. end
  64.  
  65. function updateBusses(devices)
  66.     updateBus(devices.BusA)
  67.     updateBus(devices.BusB)
  68.     updateBus(devices.BusC)
  69. end
  70.  
  71.  
  72.  
  73. function updateRedstone()
  74.     updateBusses(smelteryA)
  75.     updateBusses(smelteryB)
  76.     updateBusses(tankA)
  77.     updateBusses(tankB)
  78. end
  79.  
  80.  
  81.  
  82. function respondMonitorTouched()
  83.    
  84.     while true do
  85.         Event, EventAdress, EventPosX, EventPosY = os.pullEvent("monitor_touch")
  86.         touch.x = EventPosX
  87.         touch.y = EventPosY
  88.         touch.q = true
  89.         loop()
  90.     end
  91. end
  92.  
  93. function updateSmelteryA(smeltery,xPos)
  94.    
  95.     stateA = smeltery.BusA.state
  96.     stateB = smeltery.BusB.state
  97.     stateC = smeltery.BusC.state
  98.  
  99.     if smeltery.data.select == "A" then
  100.         mon1.setCursorPos(xPos,16)
  101.         mon1.setBackgroundColor(colors.gray)
  102.         mon1.setTextColor(colors.white)
  103.         mon1.write(string.char(31,140,30))
  104.     else
  105.         mon1.setCursorPos(xPos+1,16)
  106.         mon1.setBackgroundColor(colors.black)
  107.         mon1.setTextColor(colors.white)
  108.         mon1.write(DirLookupTOP.stateA.key)
  109.     end
  110.     if smeltery.data.select == "B" then
  111.         mon1.setCursorPos(xPos+3,16)
  112.         mon1.setBackgroundColor(colors.gray)
  113.         mon1.setTextColor(colors.white)
  114.         mon1.write(string.char(31,140,30))
  115.     else
  116.         mon1.setCursorPos(xPos+4,16)
  117.         mon1.setBackgroundColor(colors.black)
  118.         mon1.setTextColor(colors.white)
  119.         mon1.write(DirLookupTOP.stateB.key)
  120.     end
  121.     if smeltery.data.select == "C" then
  122.         mon1.setCursorPos(xPos+7,16)
  123.         mon1.setBackgroundColor(colors.gray)
  124.         mon1.setTextColor(colors.white)
  125.         mon1.write(string.char(31,140,30))
  126.     else
  127.         mon1.setCursorPos(xPos+8,16)
  128.         mon1.setBackgroundColor(colors.black)
  129.         mon1.setTextColor(colors.white)
  130.         mon1.write(DirLookupTOP.stateC.key)
  131.     end
  132.    
  133.    
  134. end
  135.  
  136. function drawPipes()
  137.     mon1.setTextScale(1)
  138.     mon1.setBackgroundColor(colors.black)
  139.     mon1.setTextColor(colors.white)
  140.     mon1.setCursorPos(1,1)
  141.     print(mon1.getSize())
  142.     bgF = fs.open(layer1,"r")
  143.     for i = 1,26,1 do
  144.         line = bgF.read(83)
  145.         print(line)
  146.         mon1.setCursorPos(1,i)
  147.         mon1.write(line)
  148.     end
  149.     bgF.close()
  150.  
  151.  
  152. end
  153.  
  154.  
  155.  
  156. function loop()
  157.  
  158.     drawPipes()
  159.    
  160.     updateSmelteryA(smelteryA,3)
  161.     updateRedstone()
  162. end
  163.    
  164. function generalUpdate()
  165.     while true do
  166.         loop()
  167.         sleep(1/updateFreq)
  168.     end
  169. end
  170.  
  171.  
  172.  
  173.  
  174. parallel.waitForAny(respondMonitorTouched,generalUpdate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement