spark.lua 847 B

123456789101112131415161718192021222324252627282930313233
  1. local Spark = {}
  2. Spark.name = 'Spark'
  3. Spark.code = 'spark'
  4. Spark.activate = function(self)
  5. self.speed = love.math.random(200, 300)
  6. self.alpha = .6 + love.math.random() * .4
  7. self.length = love.math.random(4, 12)
  8. self.angle = 0
  9. self.depth = -8
  10. ctx.view:register(self)
  11. end
  12. Spark.update = function(self)
  13. self.alpha = self.alpha - 2 * tickRate
  14. if self.alpha <= 0 then return true end
  15. self.x = self.x + math.dx(self.speed * tickRate, self.angle)
  16. self.y = self.y + math.dy(self.speed * tickRate, self.angle)
  17. end
  18. Spark.draw = function(self)
  19. local function doDraw()
  20. love.graphics.setColor(255, 255, 200, self.alpha * 255)
  21. love.graphics.line(self.x, self.y, self.x + math.dx(self.length, self.angle), self.y + math.dy(self.length, self.angle))
  22. end
  23. doDraw()
  24. ctx.effects:get('bloom'):render(doDraw)
  25. end
  26. return Spark