| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- local ServerList = class()
- local g = love.graphics
- function ServerList:activate()
- ctx.ribbon.count = 0
- self:refresh()
- end
- function ServerList:draw()
- local u, v = ctx.u, ctx.v
- local mx, my = love.mouse.getPosition()
- local hover = math.inside(mx, my, 0, .2 * v, u, .1 * v)
- g.setColor(0, 0, 0, hover and 50 or 0)
- g.rectangle('fill', 0, .2 * v, u, .1 * v)
- g.setColor(hover and {255, 255, 255, 200} or {200, 200, 200, 200})
- g.setFont('BebasNeue', .065 * v)
- g.printCenter('refresh', .05 * u, .25 * v, false, true)
- g.setColor(0, 0, 0, 100)
- g.rectangle('fill', 16, .3 * v + 16, u - 32, .5 * v - 32)
- g.setFont('pixel', 8)
- if #self.servers == 0 then
- g.setColor(200, 50, 50)
- g.printCenter('There are no online servers', .5 * u, .3 * v + 16 + (.5 * v - 32) / 2)
- return
- end
- local x, y = love.mouse.getPosition()
- for i = 1, #self.servers do
- local yy = .3 * v + 24 + (g.getFont():getHeight() * (i - 1))
- if math.inside(mx, my, 16, yy, u - 32, g.getFont():getHeight()) then
- g.setColor(0, 0, 0, 200)
- g.rectangle('fill', 16, yy, u - 32, g.getFont():getHeight())
- end
- g.setColor(255, 255, 255)
- g.print(self.servers[i].name, 32, yy)
- end
- end
- function ServerList:keypressed(key)
- if key == 'r' then self:refresh() end
- end
- function ServerList:mousepressed(x, y, button)
- local u, v = ctx.u, ctx.v
- if button == 'l' then
- for i = 1, #self.servers do
- local yy = .3 * v + 24 + (g.getFont():getHeight() * (i - 1))
- if math.inside(x, y, 16, yy, u - 32, g.getFont():getHeight()) then
- ctx:connect(self.servers[i].ip)
- end
- end
- if math.inside(x, y, 0, .2 * v, u, .1 * v) then
- self:refresh()
- end
- end
- end
- function ServerList:refresh()
- self.servers = app.net.goregous:listServers()
- end
- return ServerList
|