Brodur 0 Posted April 9, 2019 Share Posted April 9, 2019 I am working on making another program and needed to port some old code from computer craft so I figured I may as well share. This file conaints 2 types of menus, a vertical list which takes an array and optional header text, and a yes/no style menu that can be customized. local term = require("term") local event = require("event") local methods = {} function methods.list(m, header) header = header or "Menu List" n=1 while(true) do term.clear() term.setCursor(1,1) term.write(header) term.setCursor(1,2) for i=1, #m, 1 do if(i==n) then term.write(" [" .. m[i] .. "]\n") else term.write(" " .. m[i] .. "\n") end end local _,_,_,key = event.pull("key_down") if(key==200 and n>1) then --go up n = n-1 end if(key==208 and n<#m) then --go down n = n+1 end if(key==28) then --exit break end end term.clear() term.setCursor(1,1) return n end function methods.dialog(prompt, lOpt, rOpt) prompt = prompt or "Continue" lOpt = lOpt or "YES" rOpt = rOpt or "NO" local n = 1 term.write(prompt.."\n") while true do local x, y =term.getCursor() term.clearLine() if n==1 then term.setCursor(x, y) term.clearLine() term.write ("["..lOpt.."] "..rOpt) else term.setCursor(x, y) term.clearLine() term.write(" "..lOpt.." ["..rOpt.."]") end term.setCursor(x, y) local _,_,_,key = event.pull("key_down") if key==203 then n=1 end if key==205 then n=2 end if key==28 then term.write("\n") return n end end end return methods https://pastebin.com/aHa8NnwX Quote Link to post Share on other sites