cart.lua 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. local Cart = class()
  2. Cart.name = 'Cart'
  3. Cart.code = 'cart'
  4. Cart.mod = 'tugOfWar'
  5. Cart.collision = {}
  6. Cart.collision.shape = 'circle'
  7. Cart.collision.tag = 'wall'
  8. Cart.radius = 40
  9. Cart.range = 120
  10. Cart.speed = 30
  11. Cart.depth = -5
  12. function Cart:activate(map)
  13. ctx.event:emit('collision.attach', {object = self})
  14. if ctx.view then ctx.view:register(self) end
  15. self.prevX, self.prevY = self.x, self.y
  16. self.curves = table.map(self.curves, love.math.newBezierCurve)
  17. end
  18. function Cart:update()
  19. self.prevX, self.prevY = self.x, self.y
  20. end
  21. function Cart:draw()
  22. local g = love.graphics
  23. local x, y = math.lerp(self.prevX, self.x, tickDelta / tickRate), math.lerp(self.prevY, self.y, tickDelta / tickRate)
  24. g.setColor(255, 255, 255)
  25. table.each(self.curves, function(curve) g.line(curve:render()) end)
  26. g.setColor(255, 255, 255, 50)
  27. g.circle('fill', x, y, self.range)
  28. g.setColor(255, 255, 255, 100)
  29. g.circle('fill', x, y, self.radius)
  30. g.setColor(255, 255, 255)
  31. g.circle('line', x, y, self.radius)
  32. end
  33. return Cart