rework + cool bomber
This commit is contained in:
59
source/scripts/bomber/floatingText.lua
Normal file
59
source/scripts/bomber/floatingText.lua
Normal file
@@ -0,0 +1,59 @@
|
||||
FloatingText = {}
|
||||
class('FloatingText').extends(playdate.graphics.sprite)
|
||||
|
||||
local floatFont = Graphics.font.new('assets/fonts/Mini Sans 2X')
|
||||
|
||||
local phrases = { "-1", "nice", "200", "dead", "done", "nice shot", "boom", "rip", "lol", "ez" }
|
||||
|
||||
function FloatingText.spawnCustom(x, y, text)
|
||||
local ft = FloatingText(x, y)
|
||||
ft.text = text
|
||||
local w = floatFont:getTextWidth(text) + 4
|
||||
ft:setSize(w, 16)
|
||||
ft:markDirty()
|
||||
return ft
|
||||
end
|
||||
|
||||
function FloatingText:init(x, y)
|
||||
FloatingText.super.init(self)
|
||||
|
||||
self.text = phrases[math.random(1, #phrases)]
|
||||
self.life = 0
|
||||
self.maxLife = 60
|
||||
self.driftX = math.random(-20, 20) / 10
|
||||
self.driftY = -math.random(10, 20) / 10
|
||||
|
||||
local w = floatFont:getTextWidth(self.text) + 4
|
||||
self:setSize(w, 16)
|
||||
self:setCenter(0.5, 0.5)
|
||||
self:setZIndex(ZIndex.ui + 1)
|
||||
self:moveTo(x, y)
|
||||
self:add()
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
function FloatingText:update()
|
||||
self.life = self.life + 1
|
||||
if self.life >= self.maxLife then
|
||||
self:remove()
|
||||
return
|
||||
end
|
||||
|
||||
self:moveBy(self.driftX, self.driftY)
|
||||
self.driftY = self.driftY + 0.03
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
function FloatingText:draw()
|
||||
local t = 1 - (self.life / self.maxLife)
|
||||
if t > 0.5 then
|
||||
floatFont:drawText(self.text, 2, 0)
|
||||
else
|
||||
local dither = playdate.graphics.image.kDitherTypeBayer4x4
|
||||
local img = Graphics.image.new(self.width, self.height)
|
||||
Graphics.pushContext(img)
|
||||
floatFont:drawText(self.text, 2, 0)
|
||||
Graphics.popContext()
|
||||
img:drawFaded(0, 0, t * 2, dither)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user