You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
69 lines
1.5 KiB
--! file enemy.lua
|
|
require("blaster")
|
|
Enemy = Object:extend()
|
|
|
|
local fireTime = love.timer.getTime()
|
|
|
|
function Enemy:new(x, y, radius)
|
|
self.origin = { x, y }
|
|
self.x = x
|
|
self.y = y
|
|
self.width = 30
|
|
self.height = 30
|
|
self.health = 100
|
|
self.move_radius = radius
|
|
self.speed = 100
|
|
self.fireRate = 2
|
|
|
|
listOfBullets = {}
|
|
end
|
|
|
|
function Enemy:draw()
|
|
--draw stuff
|
|
--love.graphics.rectangle("line", self.x, self.y, self.width, self.height)
|
|
local fighter = love.graphics.newImage("/assets/enemy/e-fighter.png")
|
|
|
|
love.graphics.draw(fighter, self.x, self.y, 0, -1)
|
|
|
|
for _, v in ipairs(listOfBullets) do
|
|
love.graphics.circle("fill", v.x, v.y, v.radius)
|
|
end
|
|
end
|
|
|
|
function Enemy:update(dt)
|
|
local bounds = { self.origin[1] - self.move_radius, self.origin[1] + self.move_radius }
|
|
local window_height = love.graphics.getHeight()
|
|
|
|
self.x = self.x + self.speed * dt
|
|
|
|
--movement
|
|
if self.x > bounds[2] then
|
|
self.speed = -self.speed
|
|
elseif self.x < bounds[1] then
|
|
self.speed = -self.speed
|
|
end
|
|
|
|
--firing!
|
|
self:fire()
|
|
|
|
for i, v in ipairs(listOfBullets) do
|
|
v:update(dt)
|
|
|
|
if v.y > window_height then
|
|
v.destroy = true
|
|
end
|
|
|
|
if v.destroy == true then
|
|
print("Enemy Bullet Removed! Bullets in table remaining: ", #listOfBullets)
|
|
table.remove(listOfBullets, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
--shoot at the player a variable number of seconds
|
|
function Enemy:fire()
|
|
if love.timer.getTime() - fireTime > self.fireRate then
|
|
table.insert(listOfBullets, Blaster(self.x, self.y, "enemy"))
|
|
fireTime = love.timer.getTime()
|
|
end
|
|
end
|
|
|