grand_mind1

Ticket Station

Jul 6th, 2014
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.25 KB | None | 0 0
  1. os.loadAPI("btn") -- Load Button API
  2. local ticket = peripheral.wrap("back") -- Wrap the ticket machine peripheral
  3.  
  4. -- Declare Variables
  5. local curPage = 1
  6. local file
  7. local lineNum
  8. local fullLine
  9. local ticketName
  10. local input
  11.  
  12.  
  13. local function readLine(file, lineNum)
  14.   h = fs.open(file,"r")
  15.   for i = 1,lineNum-1 do
  16.     local wasteLine = h.readLine()
  17.   end
  18.   line = h.readLine()
  19.   h.close()
  20.   return line
  21. end
  22.  
  23. local function getTicketName(fullLine)
  24.   local spot = string.find(fullLine, " = ")+3
  25.   local destName = string.sub(fullLine, spot)
  26.   return destName
  27. end
  28.  
  29. local function getDestName(lineNum)
  30.   local fullLine = readLine("dests", lineNum)
  31.   local spot = string.find(fullLine, " = ")
  32.   local destName = string.sub(fullLine, -#fullLine, spot)
  33.   return destName
  34. end
  35.  
  36. local function createTicket(lineNum)
  37.   ticket.createTicket(getTicketName(readLine("dests",lineNum)))
  38.   sleep(2)
  39.   rs.setOutput("right",true)
  40.   sleep(1)
  41.   rs.setOutput("right",false)
  42. end
  43.  
  44. function buttonPress(name)
  45.   if btn.getText(name) ~= "" then
  46.     btn.activate(name)
  47.     btn.createScreen()
  48.     createTicket(tonumber(name))
  49.     btn.deActivate(name)
  50.     btn.createScreen()
  51.   end
  52. end
  53.  
  54. -- Enables the drawing of buttons 1-9
  55. -- Disables the drawing of other buttons
  56. function firstPage()
  57.   btn.deActivateAllDraw()
  58.   btn.activateDraw("1")
  59.   btn.activateDraw("2")
  60.   btn.activateDraw("3")
  61.   btn.activateDraw("4")
  62.   btn.activateDraw("5")
  63.   btn.activateDraw("6")
  64.   btn.activateDraw("7")
  65.   btn.activateDraw("8")
  66.   btn.activateDraw("9")
  67.   btn.activateDraw("next")
  68.   btn.activateDraw("edit")
  69.   term.clear()
  70.   term.setCursorPos(1,1)
  71.   btn.createScreen("Ticket Station",colors.white)
  72.   btn.centerText(19,"1",colors.white)
  73. end
  74.  
  75. -- Enables the drawing of buttons 10-18
  76. -- Disables the drawing of other buttons
  77. function secondPage()
  78.   btn.deActivateAllDraw()
  79.   btn.activateDraw("10")
  80.   btn.activateDraw("11")
  81.   btn.activateDraw("12")
  82.   btn.activateDraw("13")
  83.   btn.activateDraw("14")
  84.   btn.activateDraw("15")
  85.   btn.activateDraw("16")
  86.   btn.activateDraw("17")
  87.   btn.activateDraw("18")
  88.   btn.activateDraw("next")
  89.   btn.activateDraw("back")
  90.   btn.deActivateDraw("edit")
  91.   term.clear()
  92.   term.setCursorPos(1,1)
  93.   btn.createScreen("Ticket Station",colors.white)
  94.   btn.centerText(19,"2",colors.white)
  95. end
  96.  
  97. -- Enables the drawing of buttons 19-27
  98. -- Disables the drawing of other buttons
  99. function thirdPage()
  100.   btn.deActivateAllDraw()
  101.   btn.activateDraw("19")
  102.   btn.activateDraw("20")
  103.   btn.activateDraw("21")
  104.   btn.activateDraw("22")
  105.   btn.activateDraw("23")
  106.   btn.activateDraw("24")
  107.   btn.activateDraw("25")
  108.   btn.activateDraw("26")
  109.   btn.activateDraw("27")
  110.   btn.activateDraw("back")
  111.   btn.deActivateDraw("edit")
  112.   term.clear()
  113.   term.setCursorPos(1,1)
  114.   btn.createScreen("Ticket Station",colors.white)
  115.   btn.centerText(19,"3",colors.white)
  116. end
  117.  
  118. -- Function called when the "Back" button is pressed
  119. -- Determines what page is currently selected and goes back 1
  120. -- Not a valid function when the first page is selected
  121. function back()
  122.   if curPage == 2 then
  123.     curPage = 1
  124.     firstPage()
  125.   elseif curPage == 3 then
  126.     curPage = 2
  127.     secondPage()
  128.   end
  129. end
  130.  
  131. -- Function called when the "Next" button is pressed
  132. -- Determines what page is currently selected and goes forward 1
  133. -- Not a vlid function when the last page is selected
  134. function next()
  135.   if curPage == 1 then
  136.     curPage = 2
  137.     secondPage()
  138.   elseif curPage == 2 then
  139.     curPage = 3
  140.     thirdPage()
  141.   end
  142. end
  143.  
  144. local function loadButtons()
  145.   -- First Page Buttons
  146.   btn.fillTable("1",3,17,3,5,getDestName(1),buttonPress,nil,true)
  147.   btn.fillTable("2",19,33,3,5,getDestName(2),buttonPress,nil,true)
  148.   btn.fillTable("3",35,49,3,5,getDestName(3),buttonPress,nil,true)
  149.   btn.fillTable("4",3,17,8,10,getDestName(4),buttonPress,nil,true)
  150.   btn.fillTable("5",19,33,8,10,getDestName(5),buttonPress,nil,true)
  151.   btn.fillTable("6",35,49,8,10,getDestName(6),buttonPress,nil,true)
  152.   btn.fillTable("7",3,17,13,15,getDestName(7),buttonPress,nil,true)
  153.   btn.fillTable("8",19,33,13,15,getDestName(8),buttonPress,nil,true)
  154.   btn.fillTable("9",35,49,13,15,getDestName(9),buttonPress,nil,true)
  155.  
  156.   -- Second Page Buttons
  157.   btn.fillTable("10",3,17,3,5,getDestName(10),buttonPress,nil,false)
  158.   btn.fillTable("11",19,33,3,5,getDestName(11),buttonPress,nil,false)
  159.   btn.fillTable("12",35,49,3,5,getDestName(12),buttonPress,nil,false)
  160.   btn.fillTable("13",3,17,8,10,getDestName(13),buttonPress,nil,false)
  161.   btn.fillTable("14",19,33,8,10,getDestName(14),buttonPress,nil,false)
  162.   btn.fillTable("15",35,49,8,10,getDestName(15),buttonPress,nil,false)
  163.   btn.fillTable("16",3,17,13,15,getDestName(16),buttonPress,nil,false)
  164.   btn.fillTable("17",19,33,13,15,getDestName(17),buttonPress,nil,false)
  165.   btn.fillTable("18",35,49,13,15,getDestName(18),buttonPress,nil,false)
  166.  
  167.   -- Third Page Butons
  168.   btn.fillTable("19",3,17,3,5,getDestName(19),buttonPress,nil,false)
  169.   btn.fillTable("20",19,33,3,5,getDestName(20),buttonPress,nil,false)
  170.   btn.fillTable("21",35,49,3,5,getDestName(21),buttonPress,nil,false)
  171.   btn.fillTable("22",3,17,8,10,getDestName(22),buttonPress,nil,false)
  172.   btn.fillTable("23",19,33,8,10,getDestName(23),buttonPress,nil,false)
  173.   btn.fillTable("24",35,49,8,10,getDestName(24),buttonPress,nil,false)
  174.   btn.fillTable("25",3,17,13,15,getDestName(25),buttonPress,nil,false)
  175.   btn.fillTable("26",19,33,13,15,getDestName(26),buttonPress,nil,false)
  176.   btn.fillTable("27",35,49,13,15,getDestName(27),buttonPress,nil,false)
  177.  
  178.   -- Misc Buttons
  179.   btn.fillTable("back",2,9,17,19,"Back",back,colors.red,true)
  180.   btn.fillTable("next",43,50,17,19,"Next",next,colors.red,true)
  181.   btn.fillTable("edit",2,9,17,19,"Edit",edit,colors.red,true)
  182. end
  183.  
  184. function edit()
  185.   btn.deActivateAllDraw()
  186.   btn.createScreen()
  187.   input = ""
  188.   term.clear()
  189.   term.setCursorPos(1,1)
  190.   print("Please enter the ticket station password: ")
  191.   input = read("*")
  192.   if input == "trainsarecool" then
  193.     shell.run("edit dests")
  194.   else
  195.     term.setCursorPos(1,4)
  196.     print("Incorrect Password....")
  197.     sleep(2)
  198.   end
  199.   loadButtons()
  200.   firstPage()
  201. end
  202.  
  203. loadButtons()
  204. firstPage()
  205. while true do
  206.   event, button, x, y = os.pullEvent("mouse_click") -- Check for a mouse click
  207.   btn.checkClick(x,y) -- Determine where the user clicked. See ButtonAPI
  208. end
Advertisement
Add Comment
Please, Sign In to add comment