diff --git a/data/particle.lua b/data/particle.lua deleted file mode 100644 index 4784417..0000000 --- a/data/particle.lua +++ /dev/null @@ -1,100 +0,0 @@ -Particle = Entity:New(x,y) - - function Particle:New(x,y,particle_data) - local o = Entity:New(x,y) - - o.pos = {x = x, y = y} - - - o.speed = particle_data.speed or 0 - o.direction = particle_data.direction or o.direction - o.sprite_rotation = particle_data.sprite_rotation or o.sprite_rotation - o.sprite_offset = particle_data.sprite_offset or o.sprite_offset - o.sprite_scale = particle_data.sprite_scale or o.sprite_scale - o.sprite_tint = particle_data.sprite_tint or o.sprite_tint - o.sprite_alpha = particle_data.sprite_alpha or o.sprite_alpha - o.sprite_alpha_base = o.sprite_alpha - - o.sprite_flip = particle_data.sprite_flip or o.sprite_flip - o.animation_active = particle_data.animation_active or false - - o.time = 0.5 - o.timer = 0 - - o.vel = { - x = o.speed * math.cos(o.direction), - y = o.speed * math.sin(o.direction) - } - - o.speed_increase = particle_data.speed_increase or 0 - - if particle_data.light ~= nil then - o.lightRange = particle_data.light - local flicker = particle_data.light_flicker or nil - local color = particle_data.light_color or nil - o.light = CreateLight(o.pos.x,o.pos.y,o.lightRange,flicker,color) - end - - -- animations - if particle_data.animation ~= nil then - o.body = Animation:New(particle_data.animation) - o:centerOffset(o.body) - o:getBoundingBox(o.body) - if not o.animation_active then - o.body.speed = 0 - end - end - - table.insert(LoadedParticles,o) - o.id = #LoadedParticles - - setmetatable(o, self) - self.__index = self - return o - end - -function Particle:Kill() - if self.light ~= nil then - KillLight(self.light) - end - if self.id ~= nil then - for _, e in pairs(LoadedParticles) do - if e.id > self.id then - e.id = e.id - 1 - end - end - table.remove(LoadedParticles,self.id) - end - self = nil -end - -function Particle:HandleAnimation() - self.timer = self.timer + current_dt - self.sprite_alpha = self.sprite_alpha_base*(self.time-self.timer)/self.time - if self.light ~= nil then - self:LightAdjust() - self.light.range = self.lightRange * self.sprite_alpha/2 - end - if self.sprite_alpha < 0 then self:Kill() end - if self.body ~= nil then - self.body:Animate() - self:Draw(self.body) - end -end - -function Particle:DoPhysics() - -- adjust speed - if self.speed_increase ~= 0 then - self.speed = self.speed + self.speed_increase - self.vel.x = self.speed * math.cos(self.direction) - self.vel.y = self.speed * math.sin(self.direction) - end - -- move - self:CollisionMove() -end - -function Particle:Debug() - -- draw center CYAN - love.graphics.setColor(0,1,1) - love.graphics.circle("fill", -Camera.pos.x + self.pos.x, -Camera.pos.y + self.pos.y, 1) -end