41 lines
1,000 B
Lua
41 lines
1,000 B
Lua
-- A squid-like enemy unit
|
|
import "CoreLibs/object"
|
|
import "CoreLibs/graphics"
|
|
import "CoreLibs/sprites"
|
|
import "CoreLibs/timer"
|
|
import "entity"
|
|
import "util"
|
|
|
|
local gfx <const> = playdate.graphics
|
|
local geom <const> = playdate.geometry
|
|
|
|
class("Ika").extends(Entity)
|
|
|
|
function Ika:init(target)
|
|
Ika.super.init(self, gfx.image.new("images/ika.png"), 25, 1)
|
|
self.target = target
|
|
self:setCollidesWithGroupsMask(0x2)
|
|
self.type = 'ika'
|
|
end
|
|
|
|
function Ika:onReady()
|
|
self.weaponTimer = playdate.timer.new(5000,
|
|
function()
|
|
local b = Bullet(10, 20, self:calculateVector(self.target))
|
|
b:moveTo(self.x - (self.width/2) - 1, self.y)
|
|
b:add()
|
|
end
|
|
)
|
|
self.weaponTimer.repeats = true
|
|
end
|
|
|
|
function Ika:calculateVector(target)
|
|
local x1,y1 = self:getPosition()
|
|
local x2,y2 = target:getPosition()
|
|
return util.unitPointer(x1,y1,x2,y2) * 5
|
|
end
|
|
|
|
function Ika:remove()
|
|
Ika.super.remove(self)
|
|
if self.weaponTimer then self.weaponTimer:remove() end
|
|
end
|