--! file enemy.lua require("blaster") Enemy = Object:extend() local fireTime = love.timer.getTime() local listOfBullets function Enemy:new(x, y, radius) self.origin = { x, y } self.image = love.graphics.newImage("/assets/enemy/e-fighter.png") self.x = x self.y = y self.width = self.image:getWidth() self.height = self.image:getHeight() self.health = 10 self.move_radius = radius self.speed = 100 self.fireRate = 2 self.destroy = false listOfBullets = {} end function Enemy:draw() --draw stuff --love.graphics.rectangle("line", self.x, self.y, self.width, self.height) love.graphics.draw(self.image, self.x, self.y, 0, -1) for _, v in ipairs(listOfBullets) do --love.graphics.circle("fill", v.x, v.y, v.radius) v:draw() end end function Enemy:update(dt, player) 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 v:checkCollision(player) end --health check if self.health < 0 then self.destroy = true 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