Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("btn") -- Load Button API
- local ticket = peripheral.wrap("back") -- Wrap the ticket machine peripheral
- -- Declare Variables
- local curPage = 1
- local file
- local lineNum
- local fullLine
- local ticketName
- local input
- local function readLine(file, lineNum)
- h = fs.open(file,"r")
- for i = 1,lineNum-1 do
- local wasteLine = h.readLine()
- end
- line = h.readLine()
- h.close()
- return line
- end
- local function getTicketName(fullLine)
- local spot = string.find(fullLine, " = ")+3
- local destName = string.sub(fullLine, spot)
- return destName
- end
- local function getDestName(lineNum)
- local fullLine = readLine("dests", lineNum)
- local spot = string.find(fullLine, " = ")
- local destName = string.sub(fullLine, -#fullLine, spot)
- return destName
- end
- local function createTicket(lineNum)
- ticket.createTicket(getTicketName(readLine("dests",lineNum)))
- sleep(2)
- rs.setOutput("right",true)
- sleep(1)
- rs.setOutput("right",false)
- end
- function buttonPress(name)
- if btn.getText(name) ~= "" then
- btn.activate(name)
- btn.createScreen()
- createTicket(tonumber(name))
- btn.deActivate(name)
- btn.createScreen()
- end
- end
- -- Enables the drawing of buttons 1-9
- -- Disables the drawing of other buttons
- function firstPage()
- btn.deActivateAllDraw()
- btn.activateDraw("1")
- btn.activateDraw("2")
- btn.activateDraw("3")
- btn.activateDraw("4")
- btn.activateDraw("5")
- btn.activateDraw("6")
- btn.activateDraw("7")
- btn.activateDraw("8")
- btn.activateDraw("9")
- btn.activateDraw("next")
- btn.activateDraw("edit")
- term.clear()
- term.setCursorPos(1,1)
- btn.createScreen("Ticket Station",colors.white)
- btn.centerText(19,"1",colors.white)
- end
- -- Enables the drawing of buttons 10-18
- -- Disables the drawing of other buttons
- function secondPage()
- btn.deActivateAllDraw()
- btn.activateDraw("10")
- btn.activateDraw("11")
- btn.activateDraw("12")
- btn.activateDraw("13")
- btn.activateDraw("14")
- btn.activateDraw("15")
- btn.activateDraw("16")
- btn.activateDraw("17")
- btn.activateDraw("18")
- btn.activateDraw("next")
- btn.activateDraw("back")
- btn.deActivateDraw("edit")
- term.clear()
- term.setCursorPos(1,1)
- btn.createScreen("Ticket Station",colors.white)
- btn.centerText(19,"2",colors.white)
- end
- -- Enables the drawing of buttons 19-27
- -- Disables the drawing of other buttons
- function thirdPage()
- btn.deActivateAllDraw()
- btn.activateDraw("19")
- btn.activateDraw("20")
- btn.activateDraw("21")
- btn.activateDraw("22")
- btn.activateDraw("23")
- btn.activateDraw("24")
- btn.activateDraw("25")
- btn.activateDraw("26")
- btn.activateDraw("27")
- btn.activateDraw("back")
- btn.deActivateDraw("edit")
- term.clear()
- term.setCursorPos(1,1)
- btn.createScreen("Ticket Station",colors.white)
- btn.centerText(19,"3",colors.white)
- end
- -- Function called when the "Back" button is pressed
- -- Determines what page is currently selected and goes back 1
- -- Not a valid function when the first page is selected
- function back()
- if curPage == 2 then
- curPage = 1
- firstPage()
- elseif curPage == 3 then
- curPage = 2
- secondPage()
- end
- end
- -- Function called when the "Next" button is pressed
- -- Determines what page is currently selected and goes forward 1
- -- Not a vlid function when the last page is selected
- function next()
- if curPage == 1 then
- curPage = 2
- secondPage()
- elseif curPage == 2 then
- curPage = 3
- thirdPage()
- end
- end
- local function loadButtons()
- -- First Page Buttons
- btn.fillTable("1",3,17,3,5,getDestName(1),buttonPress,nil,true)
- btn.fillTable("2",19,33,3,5,getDestName(2),buttonPress,nil,true)
- btn.fillTable("3",35,49,3,5,getDestName(3),buttonPress,nil,true)
- btn.fillTable("4",3,17,8,10,getDestName(4),buttonPress,nil,true)
- btn.fillTable("5",19,33,8,10,getDestName(5),buttonPress,nil,true)
- btn.fillTable("6",35,49,8,10,getDestName(6),buttonPress,nil,true)
- btn.fillTable("7",3,17,13,15,getDestName(7),buttonPress,nil,true)
- btn.fillTable("8",19,33,13,15,getDestName(8),buttonPress,nil,true)
- btn.fillTable("9",35,49,13,15,getDestName(9),buttonPress,nil,true)
- -- Second Page Buttons
- btn.fillTable("10",3,17,3,5,getDestName(10),buttonPress,nil,false)
- btn.fillTable("11",19,33,3,5,getDestName(11),buttonPress,nil,false)
- btn.fillTable("12",35,49,3,5,getDestName(12),buttonPress,nil,false)
- btn.fillTable("13",3,17,8,10,getDestName(13),buttonPress,nil,false)
- btn.fillTable("14",19,33,8,10,getDestName(14),buttonPress,nil,false)
- btn.fillTable("15",35,49,8,10,getDestName(15),buttonPress,nil,false)
- btn.fillTable("16",3,17,13,15,getDestName(16),buttonPress,nil,false)
- btn.fillTable("17",19,33,13,15,getDestName(17),buttonPress,nil,false)
- btn.fillTable("18",35,49,13,15,getDestName(18),buttonPress,nil,false)
- -- Third Page Butons
- btn.fillTable("19",3,17,3,5,getDestName(19),buttonPress,nil,false)
- btn.fillTable("20",19,33,3,5,getDestName(20),buttonPress,nil,false)
- btn.fillTable("21",35,49,3,5,getDestName(21),buttonPress,nil,false)
- btn.fillTable("22",3,17,8,10,getDestName(22),buttonPress,nil,false)
- btn.fillTable("23",19,33,8,10,getDestName(23),buttonPress,nil,false)
- btn.fillTable("24",35,49,8,10,getDestName(24),buttonPress,nil,false)
- btn.fillTable("25",3,17,13,15,getDestName(25),buttonPress,nil,false)
- btn.fillTable("26",19,33,13,15,getDestName(26),buttonPress,nil,false)
- btn.fillTable("27",35,49,13,15,getDestName(27),buttonPress,nil,false)
- -- Misc Buttons
- btn.fillTable("back",2,9,17,19,"Back",back,colors.red,true)
- btn.fillTable("next",43,50,17,19,"Next",next,colors.red,true)
- btn.fillTable("edit",2,9,17,19,"Edit",edit,colors.red,true)
- end
- function edit()
- btn.deActivateAllDraw()
- btn.createScreen()
- input = ""
- term.clear()
- term.setCursorPos(1,1)
- print("Please enter the ticket station password: ")
- input = read("*")
- if input == "trainsarecool" then
- shell.run("edit dests")
- else
- term.setCursorPos(1,4)
- print("Incorrect Password....")
- sleep(2)
- end
- loadButtons()
- firstPage()
- end
- loadButtons()
- firstPage()
- while true do
- event, button, x, y = os.pullEvent("mouse_click") -- Check for a mouse click
- btn.checkClick(x,y) -- Determine where the user clicked. See ButtonAPI
- end
Advertisement
Add Comment
Please, Sign In to add comment