menu.lua 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. local Menu = class()
  2. function Menu:load(user)
  3. self.user = user or {}
  4. love.audio.tags.all.stop()
  5. love.window.setMode(800, 600, {fullscreen = false})
  6. self:resize()
  7. love.mouse.setGrabbed(false)
  8. love.mouse.setCursor(love.mouse.newCursor('data/media/graphics/cursor.png'))
  9. love.mouse.setVisible(true)
  10. love.keyboard.setKeyRepeat(true)
  11. self.ribbon = app.ui.menu.ribbon()
  12. self.background = app.ui.menu.background()
  13. self.input = app.ui.menu.input()
  14. self.options = app.ui.menu.options()
  15. self.back = app.ui.menu.back()
  16. self.alert = app.ui.menu.alert()
  17. self.pages = {
  18. login = app.ui.menu.login(),
  19. main = app.ui.menu.main(),
  20. serverlist = app.ui.menu.serverList()
  21. }
  22. self:push(self.user.token and 'main' or 'login')
  23. self.u, self.v = love.graphics.getDimensions()
  24. end
  25. function Menu:update()
  26. self.alert:update()
  27. self:run('update')
  28. end
  29. function Menu:draw()
  30. self.background:draw()
  31. self.ribbon:draw()
  32. self.back:draw()
  33. self:run('draw')
  34. self.alert:draw()
  35. end
  36. function Menu:keypressed(...)
  37. self.input:keypressed(...)
  38. return self:run('keypressed', ...)
  39. end
  40. function Menu:keyreleased(key)
  41. if key == 'escape' then love.event.quit() end
  42. return self:run('keyreleased', key)
  43. end
  44. function Menu:mousepressed(...)
  45. return self:run('mousepressed', ...)
  46. end
  47. function Menu:mousereleased(...)
  48. self.back:mousereleased(...)
  49. return self:run('mousereleased', ...)
  50. end
  51. function Menu:textinput(...)
  52. self.input:textinput(...)
  53. return self:run('textinput', ...)
  54. end
  55. function Menu:resize()
  56. self.u, self.v = love.graphics.getDimensions()
  57. self:run('resize')
  58. Typo.resize()
  59. end
  60. function Menu:run(key, ...)
  61. if not self.page or not self.pages[self.page] then return end
  62. local page = self.pages[self.page]
  63. f.exe(page[key], page, ...)
  64. end
  65. function Menu:push(page, ...)
  66. self:run('deactivate', page)
  67. self.page = page
  68. self:run('activate', ...)
  69. end
  70. function Menu:connect(ip)
  71. serverIp = ip
  72. serverPort = 6061
  73. app.util.context:remove(self)
  74. app.util.context:add(app.context.game, self.options.data)
  75. love.keyboard.setKeyRepeat(false)
  76. end
  77. return Menu