|
|
@ -6,26 +6,16 @@ Enemy = Object:extend() |
|
|
--playableArea -> {int[2]} |
|
|
--playableArea -> {int[2]} |
|
|
function Enemy:new(x, y, radius, playableArea) |
|
|
function Enemy:new(x, y, radius, playableArea) |
|
|
self.origin = { x, y } |
|
|
self.origin = { x, y } |
|
|
self.image = love.graphics.newImage("/assets/enemy/e-fighter.png") |
|
|
|
|
|
|
|
|
|
|
|
self.x = x |
|
|
self.x = x |
|
|
self.y = y |
|
|
self.y = y |
|
|
self.playableLeft = playableArea[1] |
|
|
self.playableLeft = playableArea[1] |
|
|
self.playableRight = playableArea[2] |
|
|
self.playableRight = playableArea[2] |
|
|
|
|
|
|
|
|
self.type = "enemy" |
|
|
|
|
|
self.health = 10 |
|
|
|
|
|
self.scoreValue = 100 |
|
|
|
|
|
self.move_radius = radius |
|
|
self.move_radius = radius |
|
|
self.speed = 80 |
|
|
|
|
|
self.fireRate = 1 |
|
|
|
|
|
self.destroy = false |
|
|
self.destroy = false |
|
|
|
|
|
|
|
|
self.height = 22 |
|
|
self.height, self.width, self.x_offset, self.y_offset, |
|
|
self.width = 24 |
|
|
|
|
|
self.x_offset = 18 |
|
|
|
|
|
self.y_offset = 20 |
|
|
|
|
|
|
|
|
|
|
|
self.hitbox = { |
|
|
self.hitbox = { |
|
|
(self.x + self.x_offset), |
|
|
(self.x + self.x_offset), |
|
|
(self.x + self.x_offset + self.width), |
|
|
(self.x + self.x_offset + self.width), |
|
|
@ -67,15 +57,12 @@ function Enemy:update(dt, player) |
|
|
local window_height = love.graphics.getHeight() |
|
|
local window_height = love.graphics.getHeight() |
|
|
|
|
|
|
|
|
self.x = self.x + self.speed * dt |
|
|
self.x = self.x + self.speed * dt |
|
|
--self.hitbox = { (self.x + 18), (self.x + 44), (self.y + 20), (self.y + 44) } |
|
|
|
|
|
self:setHitbox() |
|
|
self:setHitbox() |
|
|
|
|
|
|
|
|
--movement |
|
|
--movement |
|
|
if self.hitbox[1] < self.move_bounds[1] then |
|
|
if self.hitbox[1] < self.move_bounds[1] then |
|
|
--self.x = self.move_bounds[1] |
|
|
|
|
|
self.speed = -self.speed |
|
|
self.speed = -self.speed |
|
|
elseif self.hitbox[2] > self.move_bounds[2] then |
|
|
elseif self.hitbox[2] > self.move_bounds[2] then |
|
|
--self.x = self.move_bounds[2] - self.width - self.x_offset |
|
|
|
|
|
self.speed = -self.speed |
|
|
self.speed = -self.speed |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
@ -104,7 +91,6 @@ end |
|
|
|
|
|
|
|
|
--shoot at the player a variable number of seconds |
|
|
--shoot at the player a variable number of seconds |
|
|
function Enemy:fire() |
|
|
function Enemy:fire() |
|
|
--local fire_origin = { self.x + 26, self.y + 44 } |
|
|
|
|
|
local fire_origin = { ((self.x + (self.width / 2)) + self.x_offset), (self.y + self.height + self.y_offset) } |
|
|
local fire_origin = { ((self.x + (self.width / 2)) + self.x_offset), (self.y + self.height + self.y_offset) } |
|
|
if love.timer.getTime() - self.fireTime > self.fireRate then |
|
|
if love.timer.getTime() - self.fireTime > self.fireRate then |
|
|
table.insert(self.enemyBullets, Blaster(fire_origin[1], fire_origin[2], "enemy")) |
|
|
table.insert(self.enemyBullets, Blaster(fire_origin[1], fire_origin[2], "enemy")) |
|
|
@ -117,10 +103,8 @@ function Enemy:setMoveBounds() |
|
|
|
|
|
|
|
|
if (self.hitbox[1] - self.move_radius) < self.playableLeft then |
|
|
if (self.hitbox[1] - self.move_radius) < self.playableLeft then |
|
|
result[1] = self.playableLeft |
|
|
result[1] = self.playableLeft |
|
|
--result[2] = self.playableLeft + self.hitbox[1] + self.move_radius |
|
|
|
|
|
result[2] = self.playableLeft + (self.move_radius * 2) |
|
|
result[2] = self.playableLeft + (self.move_radius * 2) |
|
|
elseif (self.hitbox[2] + self.move_radius) > self.playableRight then |
|
|
elseif (self.hitbox[2] + self.move_radius) > self.playableRight then |
|
|
--result[1] = self.playableRight - self.hitbox[2] - self.move_radius |
|
|
|
|
|
result[1] = self.playableRight - (self.move_radius * 2) |
|
|
result[1] = self.playableRight - (self.move_radius * 2) |
|
|
result[2] = self.playableRight |
|
|
result[2] = self.playableRight |
|
|
else |
|
|
else |
|
|
|