rework + cool bomber
This commit is contained in:
54
source/scripts/bomber/smokeCloud.lua
Normal file
54
source/scripts/bomber/smokeCloud.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
SmokeCloud = {}
|
||||
class('SmokeCloud').extends(playdate.graphics.sprite)
|
||||
|
||||
function SmokeCloud:init(x, y)
|
||||
SmokeCloud.super.init(self)
|
||||
|
||||
self.radius = 25
|
||||
self.maxLife = 150
|
||||
self.life = self.maxLife
|
||||
|
||||
local size = self.radius * 2 + 4
|
||||
self:setSize(size, size)
|
||||
self:setCenter(0.5, 0.5)
|
||||
self:setZIndex(ZIndex.fx - 1)
|
||||
self:moveTo(x, y)
|
||||
self:add()
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
function SmokeCloud:update()
|
||||
if not BomberScene.instance then
|
||||
self:remove()
|
||||
return
|
||||
end
|
||||
|
||||
self:moveBy(0, BomberScene.instance.scrollSpeed)
|
||||
self.life = self.life - 1
|
||||
|
||||
if self.life <= 0 or self.y > 280 then
|
||||
self:remove()
|
||||
return
|
||||
end
|
||||
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
function SmokeCloud:draw()
|
||||
local t = self.life / self.maxLife
|
||||
local r = self.radius * t
|
||||
local cx = self.width / 2
|
||||
local cy = self.height / 2
|
||||
|
||||
local dither = playdate.graphics.image.kDitherTypeBayer4x4
|
||||
if t < 0.3 then
|
||||
dither = playdate.graphics.image.kDitherTypeBayer8x8
|
||||
elseif t < 0.6 then
|
||||
dither = playdate.graphics.image.kDitherTypeBayer4x4
|
||||
end
|
||||
|
||||
playdate.graphics.setColor(playdate.graphics.kColorBlack)
|
||||
playdate.graphics.setDitherPattern(1 - t * 0.6, dither)
|
||||
playdate.graphics.fillCircleAtPoint(cx, cy, r)
|
||||
playdate.graphics.setColor(playdate.graphics.kColorBlack)
|
||||
end
|
||||
Reference in New Issue
Block a user