Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function stopMenu()
- repeating = false
- running = false
- term.clear()
- term.setCursorPos(1,1)
- end
- function clear()
- term.clear()
- term.setCursorPos(1,1)
- end
- function runMenu( menu, repeating, selectedItem, tColor )
- running = true
- --[[ Printing Methods ]]--
- local function printMenu( menu, D )
- for i=1,#menu do
- if i == selectedItem then
- if term.isColour() then
- term.setTextColour(D) write(">> ") term.setTextColour(colors.white) write(menu[i].text) term.setTextColour(D) write(" <<") term.setTextColour(colors.white) print("")
- else
- print(">> "..menu[i].text.." <<")
- end
- else
- print(" "..menu[i].text.." ")
- end
- end
- --[[ Handler Methods ]]--
- local function onKeyPressed( key, menu )
- if key == keys.enter then
- onItemSelected(menu)
- elseif key == keys.up then
- if selectedItem > 1 then
- selectedItem = selectedItem - 1
- end
- elseif key == keys.down then
- if selectedItem < #menu then
- selectedItem = selectedItem + 1
- end
- end
- end
- end
- local function onItemSelected( menu )
- runCommand(menu[selectedItem].handler)
- end
- local function runcommand(args)
- local tEnv = { ["exit"] = function() bRunning = false end, }
- setmetatable( tEnv, { __index = getfenv() } )
- local func, e = loadstring(args, "lua")
- local func2, e2 = loadstring( "return "..s, "lua")
- if not func then
- func = func2
- e = nil
- nForcePrint = 1
- else
- if func2 then
- func = func2
- end
- end
- end
- if func then
- setfenv(func, tEnv)
- local tResults = { pcall( function() return func() end) }
- end
- end
- local function onClick( button, xPos, yPos, menu, D )
- if button == 1 then
- if yPos <= #menu then
- selectedItem = yPos
- runCommand(menu[selectedItem].handler)
- else
- runCommand(menu[#menu].handler)
- end
- elseif button == 2 then
- if yPos > #menu then
- yPos = #menu
- end
- selectedItem = yPos
- clear()
- printMenu(menu,D)
- end
- end
- local function loadMenu( menu, repeating, D )
- while repeating and running do
- clear()
- printMenu(menu, D)
- term.setCursorPos(50, 1)
- if term.isColour() then
- term.setTextColour(colors.yellow)
- print(selectedItem)
- term.setTextColour(colors.white)
- else
- print(selectedItem)
- end
- event, arg1, arg2, arg3 = os.pullEvent()
- if event=="mouse_click" then
- onClick( arg1, arg2, arg3, menu, D )
- elseif event == "key" then
- onKeyPressed( arg1, menu )
- end
- end
- end
- tColor = string.lower(tColor)
- if tColor == "white" then
- D = 1
- elseif tColor == "orange" then
- D = 2
- elseif tColor == "magenta" then
- D = 4
- elseif tColor == "lightblue" then
- D = 8
- elseif tColor == "yellow" then
- D = 16
- elseif tColor == "lime" then
- D = 32
- elseif tColor == "pink" then
- D = 64
- elseif tColor == "gray" then
- D = 128
- elseif tColor == "lightgray" then
- D = 256
- elseif tColor == "cyan" then
- D = 512
- elseif tColor == "purple" then
- D = 1024
- elseif tColor == "blue" then
- D = 2048
- elseif tColor == "brown" then
- D = 4096
- elseif tColor == "green" then
- D = 8192
- elseif tColor == "red" then
- D = 16384
- elseif tColor == "black" then
- D = 32768
- elseif tColor ~= "white" or "orange" or "magenta" or "lightblue" or "yellow" or "lime" or "pink" or "gray" or "lightgray" or "cyan" or "purple" or "blue" or "brown" or "green" or "red" or "black" then
- D = 1
- end
- loadMenu(menu, repeating, D)
- end
- function setSelectedItem( newSelItem )
- selectedItem = newSelItem
- clear()
- end
- function subMenu(newMenu, oldMenu, D)
- returnMenu = oldMenu
- stopMenu()
- runMenu(newMenu, true, 1, D)
- end
- function returnToMenu()
- stopMenu()
- runMenu(returnMenu, true, 1, "lime")
- end
Add Comment
Please, Sign In to add comment