190 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --[[Local Variables]]--
 | |
| local termWidth, termHeight = term.getSize()
 | |
| local selectedItem = 1
 | |
| local inMainMenu = true
 | |
| local inLightsMenu = false
 | |
| local color = "off"
 | |
| 
 | |
| 
 | |
| --[[Menu Methods]]--
 | |
| function Choice1()
 | |
|   term.clear()
 | |
|   term.setCursorPos(1,1)
 | |
|   term.write("chuj")
 | |
|   sleep(3)
 | |
| end
 | |
| 
 | |
| function Choice2()
 | |
|   selectedItem = 1
 | |
|   inLightsMenu=true
 | |
|   while inLightsMenu do
 | |
|     term.clear()
 | |
|     term.setCursorPos(1,1)
 | |
|     printMenu(lightsMenu)
 | |
|     event,key=os.pullEvent("key")
 | |
|     onKeyPressed(key,lightsMenu)
 | |
|   end
 | |
| end
 | |
| function LightsOn()
 | |
|   lightSystem("on", "white")
 | |
| end
 | |
| function AlarmOn()
 | |
|   lightSystem("on", "red")
 | |
| end
 | |
| function LOff()
 | |
|   lightSystem("off", "white")
 | |
| end
 | |
| function AOff()
 | |
|   lightSystem("off", "red")
 | |
| end
 | |
| function LightsBack()
 | |
|   inLightsMenu = false
 | |
|   selectedItem = 1
 | |
| end
 | |
| function AllOff()
 | |
|   lightSystem("off", "white")
 | |
|   lightSystem("off", "red")
 | |
| end
 | |
| 
 | |
| function Snake()
 | |
|   shell.run("worm")
 | |
| end
 | |
| 
 | |
| function Edit()
 | |
|   inMainMenu = false
 | |
| end
 | |
| 
 | |
| function Reboot()
 | |
|   print("Rebooting...")
 | |
|   sleep(1)
 | |
|   os.reboot()
 | |
| end
 | |
| 
 | |
| function Exit()
 | |
|   os.shutdown()
 | |
| end
 | |
| 
 | |
| --[[Menu Definitions]]--
 | |
| mainMenu = {
 | |
|   [1] = { text = "Who amI?",handler=Choice1 },
 | |
|   [2] = { text = "Light Controls",handler=Choice2 },
 | |
|   [3] = { text = "Snake",handler=Snake },
 | |
|   [4] = { text = "Edit program",handler=Edit },
 | |
|   [5] = { text = "Reboot",handler=Reboot },
 | |
|   [6] = { text = "Exit",handler=Exit }
 | |
| }
 | |
| lightsMenu={
 | |
|   [1]= { text="Lights On", handler=LightsOn},
 | |
|   [2]= { text="Alarm On", handler=AlarmOn},
 | |
|   [3]= { text="Lights Off", handler=LOff},
 | |
|   [4]= { text="Alarm Off", handler=AOff},
 | |
|   [5]= { text="All Off", handler=AllOff},
 | |
|   [6]= { text="Back", handler=LightsBack}
 | |
| }
 | |
| 
 | |
| --[[Printing Methods]]--
 | |
| function printMenu(menu)
 | |
|   for i=1,#menu do
 | |
|     if i== selectedItem then
 | |
|       print("[*]"..menu[i].text)
 | |
|     else
 | |
|       print("[ ]"..menu[i].text)
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| --[[Handler Method]]--
 | |
| function onKeyPressed( key, menu )
 | |
|   if key == keys.enter then
 | |
|     onItemSelected( menu )
 | |
|   elseif key == keys.up then
 | |
|     if selectedItem > 1 then
 | |
|       selectedItem = selectedItem - 1
 | |
|     else
 | |
|       selectedItem = #menu
 | |
|     end
 | |
|   elseif key == keys.down then
 | |
|     if selectedItem < #menu then
 | |
| 	    selectedItem = selectedItem + 1
 | |
|     else
 | |
|       selectedItem = 1 
 | |
| 	  end
 | |
|   end
 | |
| end
 | |
| 
 | |
| function onItemSelected( menu )
 | |
|   menu[selectedItem].handler()
 | |
| end
 | |
| 
 | |
| --[[Light System]]--
 | |
| function lightSystem( op, type )
 | |
| --[[On functions]]--
 | |
|   if color == "off" and op == "on" and type == "white" then
 | |
|     redstone.setBundledOutput("top", colors.white)
 | |
|     color = "white"
 | |
|   elseif color == "off" and op == "on" and type == "red" then
 | |
|     redstone.setBundledOutput("top", colors.red)
 | |
|     color = "red"
 | |
|   elseif color == "white" and op == "on" and type == "red" then
 | |
|     redstone.setBundledOutput("top", colors.white + colors.red)
 | |
|     color = "both"
 | |
|   elseif color == "red" and op == "on" and type == "white" then
 | |
|     redstone.setBundledOutput("top", colors.white + colors.red)
 | |
|     color = "both"
 | |
| --[[Off functions]]--
 | |
|   elseif color == "both" and op == "off" and type == "white" then
 | |
|     redstone.setBundledOutput("top", colors.red)
 | |
|     color = "red"
 | |
|   elseif color == "both" and op == "off" and type == "red" then
 | |
|     redstone.setBundledOutput("top", colors.white)
 | |
|     color = "white"
 | |
|   elseif color == "white" and op == "off" and type == "white" then
 | |
|     redstone.setBundledOutput("top", 0)
 | |
|     color = "off"
 | |
|   elseif color == "red" and op == "off" and type == "red" then
 | |
|     redstone.setBundledOutput("top", 0)
 | |
|     color = "off"
 | |
|   else error("Light system error " .. op .. " " .. type .. " " .. color)
 | |
|   end
 | |
|   inLightsMenu = false
 | |
|   selectedItem = 1
 | |
| end
 | |
| 
 | |
| --[[Main function]]--
 | |
| function main()
 | |
|   while inMainMenu do
 | |
|     term.clear()
 | |
|     term.setCursorPos(1,1)
 | |
|     printMenu(mainMenu)
 | |
|     event,key = os.pullEvent("key")
 | |
|     onKeyPressed(key,mainMenu)
 | |
|   end
 | |
| end
 | |
| 
 | |
| --[[Login system]]--
 | |
| function login()
 | |
|   term.clear()
 | |
|   term.setCursorPos(1,1)
 | |
|   print("Login:")
 | |
|   local username = read()
 | |
|   term.clear()
 | |
|   term.setCursorPos(1,1)
 | |
|   print("Password:")
 | |
|   local password = read("*")
 | |
|   if username == "ZareMate" and password == "nigga" then
 | |
|     main()
 | |
|   elseif username == "zaremate" and password == "nigga" then
 | |
|     main()
 | |
|   elseif username == "Querdus" and password == "kebab" then
 | |
|     main()
 | |
|   elseif username == "querdus" and password == "kebab" then
 | |
|     main()
 | |
|   else
 | |
|     print("Wrong Password!")
 | |
|     sleep(3)
 | |
|     os.reboot()
 | |
|   end
 | |
| end
 | |
| 
 | |
| login()
 |