players.lua 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. Players = class()
  2. function Players:init()
  3. self.players = {}
  4. end
  5. function Players:update()
  6. table.with(self.players, 'update')
  7. end
  8. function Players:keypressed(...)
  9. local p = ctx.id and self:get(ctx.id)
  10. if p then
  11. p:keypressed(...)
  12. end
  13. end
  14. function Players:keyreleased(key)
  15. local p = ctx.id and self:get(ctx.id)
  16. if p then
  17. p:keyreleased(key)
  18. end
  19. end
  20. function Players:mousepressed(x, y, b)
  21. local p = ctx.id and self:get(ctx.id)
  22. if p then
  23. p:mousepressed(x, y, b)
  24. end
  25. end
  26. function Players:gamepadpressed(gamepad, button)
  27. local p = ctx.id and self:get(ctx.id)
  28. if p then
  29. p:gamepadpressed(gamepad, button)
  30. end
  31. end
  32. function Players:gamepadaxis(gamepad, axis, value)
  33. local p = ctx.id and self:get(ctx.id)
  34. if p then
  35. p:gamepadaxis(gamepad, axis, value)
  36. end
  37. end
  38. function Players:paused()
  39. table.with(self.players, 'paused')
  40. end
  41. function Players:add(id, vars)
  42. local player = self:get(id)
  43. if player then return player end
  44. player = Player()
  45. player.id = id
  46. player.team = 1
  47. table.merge(vars, player)
  48. f.exe(player.activate, player)
  49. self.players[id] = player
  50. return player
  51. end
  52. function Players:remove(id)
  53. local player = self.players[id]
  54. if not player then return end
  55. f.exe(player.deactivate, player)
  56. self.players[id] = nil
  57. return player
  58. end
  59. function Players:get(id, t)
  60. if not id or not self.players[id] then return nil end
  61. return self.players[id]
  62. end
  63. function Players:each(fn)
  64. table.each(self.players, function(player, id)
  65. fn(self:get(id))
  66. end)
  67. end