From 62bc32c97a8ddca109b3fc3a44e6cafe60e41f93 Mon Sep 17 00:00:00 2001 From: yuki Date: Tue, 11 Nov 2025 23:47:22 -0300 Subject: [PATCH] add projectile death particle --- obj/game/Projectile.lua | 6 ++++++ obj/game/ProjectileDeathEffect.lua | 33 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 obj/game/ProjectileDeathEffect.lua diff --git a/obj/game/Projectile.lua b/obj/game/Projectile.lua index 8e583de..1a04227 100644 --- a/obj/game/Projectile.lua +++ b/obj/game/Projectile.lua @@ -49,4 +49,10 @@ function Projectile:draw() love.graphics.circle('fill', self.x, self.y, self.s) end +---Kills Projectile +function Projectile:kill() + self.area:addGameObject('ProjectileDeathEffect', self.x, self.y, {w = self.s*3}) + self:destroy() +end + return Projectile diff --git a/obj/game/ProjectileDeathEffect.lua b/obj/game/ProjectileDeathEffect.lua new file mode 100644 index 0000000..628e5d0 --- /dev/null +++ b/obj/game/ProjectileDeathEffect.lua @@ -0,0 +1,33 @@ +---@class ProjectileDeathEffect:GameObject +local ProjectileDeathEffect = GameObject:extend() + +function ProjectileDeathEffect:new(area, x, y, opts) + ProjectileDeathEffect.super.new(self, area, x, y, opts) + -- width + self.w = opts.w or 12 + self.first = true + self.timer:after(0.1, function() + self.first = false + self.second = true + self.timer:after(0.15, function() + self.second = false + self:kill() + end) + end) +end + +---Updates ProjectileDeathEffect +---@param dt number delta time +function ProjectileDeathEffect:update(dt) + ProjectileDeathEffect.super.update(self, dt) +end + +---Draws ProjectileDeathEffect +function ProjectileDeathEffect:draw() + ProjectileDeathEffect.super.draw(self) + if self.first then love.graphics.setColor(COLORS.default) + elseif self.second then love.graphics.setColor(COLORS.hp) end + love.graphics.rectangle('fill', self.x - self.w/2, self.y - self.w/2, self.w, self.w) +end + +return ProjectileDeathEffect