arcadetext.lua 973 B

123456789101112131415161718192021222324252627282930313233343536
  1. local g = love.graphics
  2. local ArcadeText = extend(Spell)
  3. function ArcadeText:activate()
  4. self.vx = 0
  5. self.vy = -20
  6. self.x = self.x or 0
  7. self.y = self.y or 0
  8. self.prevx = self.x
  9. self.prevy = self.y
  10. self.alpha = 1
  11. ctx.event:emit('view.register', {object = self})
  12. end
  13. function ArcadeText:deactivate()
  14. ctx.event:emit('view.unregister', {object = self})
  15. end
  16. function ArcadeText:update()
  17. self.prevx, self.prevy = self.x, self.y
  18. self.x = self.x + self.vx * ls.tickrate
  19. self.y = self.y + self.vy * ls.tickrate
  20. self.alpha = self.alpha - math.min(self.alpha, ls.tickrate)
  21. if self.alpha <= 0 then ctx.spells:remove(self) end
  22. end
  23. function ArcadeText:draw()
  24. local alpha = math.clamp(self.alpha, 0, 1) * 255
  25. local x, y = lume.lerp(self.prevx, self.x, ls.accum / ls.tickrate), lume.lerp(self.prevy, self.y, ls.accum / ls.tickrate)
  26. g.setFont('pixel', 8)
  27. g.setColor(255, 255, 255, alpha)
  28. g.printShadow(self.text, x, y, true)
  29. end
  30. return ArcadeText