rework + cool bomber
This commit is contained in:
71
source/scripts/bomber/ammoCrate.lua
Normal file
71
source/scripts/bomber/ammoCrate.lua
Normal file
@@ -0,0 +1,71 @@
|
||||
AmmoCrate = {}
|
||||
class('AmmoCrate').extends(playdate.graphics.sprite)
|
||||
|
||||
function AmmoCrate:init(x, y)
|
||||
AmmoCrate.super.init(self)
|
||||
|
||||
self.crateSize = 20
|
||||
self:setSize(self.crateSize, self.crateSize)
|
||||
self:setCenter(0.5, 0.5)
|
||||
self:setZIndex(ZIndex.props)
|
||||
self:setGroups(CollideGroups.props)
|
||||
self:setCollidesWithGroups({ CollideGroups.granade })
|
||||
self:setCollideRect(0, 0, self.crateSize, self.crateSize)
|
||||
self:setTag(155)
|
||||
|
||||
self.removed = false
|
||||
self.bonusGrenades = 3
|
||||
|
||||
self:moveTo(x, y)
|
||||
self:add()
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
function AmmoCrate:update()
|
||||
if self.removed then return end
|
||||
if not BomberScene.instance then return end
|
||||
|
||||
self:moveBy(0, BomberScene.instance.scrollSpeed)
|
||||
|
||||
local _, _, collisions, count = self:checkCollisions(self.x, self.y)
|
||||
if count > 0 then
|
||||
for i, collision in ipairs(collisions) do
|
||||
if collision.other:getTag() == 154 and collision.other.currentRadius <= 0.05 then
|
||||
self:pickup()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if self.y > 260 then
|
||||
self.removed = true
|
||||
self:remove()
|
||||
end
|
||||
end
|
||||
|
||||
function AmmoCrate:pickup()
|
||||
self.removed = true
|
||||
BomberScene.availableGrenades = BomberScene.availableGrenades + self.bonusGrenades
|
||||
|
||||
local particle = ParticlePoly(self.x, self.y)
|
||||
particle:setThickness(1)
|
||||
particle:setSize(1, 2)
|
||||
particle:setSpeed(1, 5)
|
||||
particle:setColour(Graphics.kColorXOR)
|
||||
particle:add(8)
|
||||
|
||||
self:remove()
|
||||
end
|
||||
|
||||
function AmmoCrate:draw()
|
||||
local s = self.crateSize
|
||||
-- Box outline
|
||||
playdate.graphics.drawRect(0, 0, s, s)
|
||||
-- Cross pattern
|
||||
playdate.graphics.drawLine(0, 0, s, s)
|
||||
playdate.graphics.drawLine(s, 0, 0, s)
|
||||
-- Inner + symbol
|
||||
local mid = s / 2
|
||||
playdate.graphics.drawLine(mid - 3, mid, mid + 3, mid)
|
||||
playdate.graphics.drawLine(mid, mid - 3, mid, mid + 3)
|
||||
end
|
||||
Reference in New Issue
Block a user