Advertisement
GauHelldragon

GauTracks v0.4

May 20th, 2014
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.06 KB | None | 0 0
  1. local mon = peripheral.wrap("top")
  2. local selected = 0
  3. local names = {"Anti","FS","Xun","Ninjuni"}
  4. local cableSide = "bottom"
  5.  
  6. local XunSwitchIn = colors.pink
  7. local XunToggleOut = colors.red
  8. local FSMainSwitchOut = colors.black
  9.  
  10. local FSMainSwitchState = false
  11.  
  12. function SetColor(row)
  13.     if ( selected == row ) then
  14.         mon.setTextColor(colors.black)
  15.         mon.setBackgroundColor(colors.white)
  16.     else
  17.         mon.setTextColor(colors.white)
  18.         mon.setBackgroundColor(colors.black)
  19.     end
  20. end
  21.  
  22. function CheckSwitch(color)
  23.     local state = rs.getBundledInput(cableSide)
  24.     return colors.test(state,color)
  25. end
  26.  
  27. function getSelected()
  28.     if ( FSMainSwitchState ) then return 2 end
  29.     if ( CheckSwitch(XunSwitchIn) ) then return 3 end
  30.     return 4
  31. end
  32.  
  33. function FindSelected()
  34.     selected = getSelected()
  35. end
  36.  
  37. function DrawScreen()
  38.     if ( selected == 0 ) then FindSelected() end
  39.     mon.clear()
  40.     for row = 1,#names do
  41.         mon.setCursorPos(1,row)
  42.         SetColor(row)
  43.         mon.write(names[row])
  44.     end
  45.     SetColor(-1)
  46. end
  47.  
  48. function pulse(color)
  49.     local oldColor = rs.getBundledOutput(cableSide)
  50.     local newColor = colors.combine(color,oldColor)
  51.     rs.setBundledOutput(cableSide,newColor)
  52.     os.sleep(0.2)
  53.     rs.setBundledOutput(cableSide,oldColor)
  54.  
  55. end
  56.  
  57. function SetTrack(FSnew,XunNew)
  58.     FSMainSwitchState = FSnew
  59.    
  60.     if ( XunNew ~= CheckSwitch(XunSwitchIn) ) then pulse(XunToggleOut) end
  61.    
  62.     if ( FSMainSwitchState ) then rs.setBundledOutput(cableSide,FSMainSwitchOut)
  63.     else rs.setBundledOutput(cableSide,0) end
  64.  
  65. end
  66.  
  67. function NewTrack(row)
  68.     if ( row > #names ) then return end
  69.     if ( row == selected ) then return end
  70.    
  71.     if ( row == 1 or row == 4 ) then
  72.         SetTrack(false,false)
  73.     end
  74.     if ( row == 2 ) then
  75.         SetTrack(true,false)
  76.     end
  77.     if ( row == 3 ) then
  78.         SetTrack(false,true)
  79.     end
  80.     selected = row
  81.     DrawScreen()
  82. end
  83.  
  84.  
  85. print("Railcontroler. Right click on monitor name to select track")
  86. DrawScreen()
  87. while true do
  88.     event,p1,p2,p3 = os.pullEvent()
  89.     if ( event == "monitor_touch" ) then NewTrack(p3) end
  90.     if ( event == "redstone" ) then
  91.         FindSelected()
  92.         DrawScreen()
  93.     end
  94.    
  95. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement