| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- local Cart = class()
- Cart.name = 'Cart'
- Cart.code = 'cart'
- Cart.mod = 'tugOfWar'
- Cart.collision = {}
- Cart.collision.shape = 'circle'
- Cart.collision.tag = 'wall'
- Cart.radius = 40
- Cart.range = 120
- Cart.speed = 30
- Cart.depth = -5
- function Cart:activate(map)
- ctx.event:emit('collision.attach', {object = self})
- if ctx.view then ctx.view:register(self) end
- self.prevX, self.prevY = self.x, self.y
- self.curves = table.map(self.curves, love.math.newBezierCurve)
- end
- function Cart:update()
- self.prevX, self.prevY = self.x, self.y
- end
- function Cart:draw()
- local g = love.graphics
- local x, y = math.lerp(self.prevX, self.x, tickDelta / tickRate), math.lerp(self.prevY, self.y, tickDelta / tickRate)
- g.setColor(255, 255, 255)
- table.each(self.curves, function(curve) g.line(curve:render()) end)
- g.setColor(255, 255, 255, 50)
- g.circle('fill', x, y, self.range)
- g.setColor(255, 255, 255, 100)
- g.circle('fill', x, y, self.radius)
- g.setColor(255, 255, 255)
- g.circle('line', x, y, self.radius)
- end
- return Cart
|