serverList.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. local ServerList = class()
  2. local g = love.graphics
  3. function ServerList:activate()
  4. ctx.ribbon.count = 0
  5. self:refresh()
  6. end
  7. function ServerList:draw()
  8. local u, v = ctx.u, ctx.v
  9. local mx, my = love.mouse.getPosition()
  10. local hover = math.inside(mx, my, 0, .2 * v, u, .1 * v)
  11. g.setColor(0, 0, 0, hover and 50 or 0)
  12. g.rectangle('fill', 0, .2 * v, u, .1 * v)
  13. g.setColor(hover and {255, 255, 255, 200} or {200, 200, 200, 200})
  14. g.setFont('BebasNeue', .065 * v)
  15. g.printCenter('refresh', .05 * u, .25 * v, false, true)
  16. g.setColor(0, 0, 0, 100)
  17. g.rectangle('fill', 16, .3 * v + 16, u - 32, .5 * v - 32)
  18. g.setFont('pixel', 8)
  19. if #self.servers == 0 then
  20. g.setColor(200, 50, 50)
  21. g.printCenter('There are no online servers', .5 * u, .3 * v + 16 + (.5 * v - 32) / 2)
  22. return
  23. end
  24. local x, y = love.mouse.getPosition()
  25. for i = 1, #self.servers do
  26. local yy = .3 * v + 24 + (g.getFont():getHeight() * (i - 1))
  27. if math.inside(mx, my, 16, yy, u - 32, g.getFont():getHeight()) then
  28. g.setColor(0, 0, 0, 200)
  29. g.rectangle('fill', 16, yy, u - 32, g.getFont():getHeight())
  30. end
  31. g.setColor(255, 255, 255)
  32. g.print(self.servers[i].name, 32, yy)
  33. end
  34. end
  35. function ServerList:keypressed(key)
  36. if key == 'r' then self:refresh() end
  37. end
  38. function ServerList:mousepressed(x, y, button)
  39. local u, v = ctx.u, ctx.v
  40. if button == 'l' then
  41. for i = 1, #self.servers do
  42. local yy = .3 * v + 24 + (g.getFont():getHeight() * (i - 1))
  43. if math.inside(x, y, 16, yy, u - 32, g.getFont():getHeight()) then
  44. ctx:connect(self.servers[i].ip)
  45. end
  46. end
  47. if math.inside(x, y, 0, .2 * v, u, .1 * v) then
  48. self:refresh()
  49. end
  50. end
  51. end
  52. function ServerList:refresh()
  53. self.servers = app.net.goregous:listServers()
  54. end
  55. return ServerList