Replaced the id system with a simple flag for deletion
This commit is contained in:
@@ -36,8 +36,6 @@ function CursedBook:new(x,y)
|
||||
light_data.color = nil
|
||||
o.light = Light:new(o.pos.x,o.pos.y,light_data)
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
|
||||
@@ -19,9 +19,8 @@ function Decoration:new(x,y,animation,light_data)
|
||||
o.light = Light:new(o.pos.x,o.pos.y,light_data)
|
||||
end
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
end
|
||||
|
||||
|
||||
@@ -31,8 +31,6 @@ function Fairy:new(x,y)
|
||||
o.particle_timer = 0
|
||||
o.particle_time = 5
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
|
||||
@@ -14,8 +14,6 @@ function HookAnchor:new(x,y,hook_distance)
|
||||
o:centerOffset(o.body)
|
||||
o:createBox(o.body)
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
|
||||
@@ -36,8 +36,6 @@ function Kupo:new(x,y)
|
||||
light_data.color = nil
|
||||
o.light = Light:new(o.pos.x,o.pos.y,light_data)
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
|
||||
@@ -22,7 +22,7 @@ function Particle:new(x,y,particle_data)
|
||||
o.func = particle_data.func or nil
|
||||
o.time = particle_data.time or nil
|
||||
|
||||
if o.time ~= nil then
|
||||
if o.time then
|
||||
if particle_data.time_unit ~= nil
|
||||
and particle_data.time_unit == "frames" then
|
||||
o.time = o.time
|
||||
@@ -37,7 +37,7 @@ function Particle:new(x,y,particle_data)
|
||||
y = o.speed * math.sin(o.direction)
|
||||
}
|
||||
|
||||
if particle_data.light ~= nil then
|
||||
if particle_data.light then
|
||||
local light_data = {}
|
||||
light_data.radius = particle_data.light
|
||||
light_data.shine_radius = particle_data.light_shine or nil
|
||||
@@ -47,34 +47,24 @@ function Particle:new(x,y,particle_data)
|
||||
end
|
||||
|
||||
-- animations
|
||||
if particle_data.animation ~= nil then
|
||||
if particle_data.animation then
|
||||
o.body = Animation:new(particle_data.animation,particle_data.animation_speed)
|
||||
o:centerOffset(o.body)
|
||||
o:createBox(o.body)
|
||||
end
|
||||
|
||||
-- particle id handled differently from other entities
|
||||
table.remove(LoadedObjects.Entities,#LoadedObjects.Entities)
|
||||
table.insert(LoadedObjects.Particles,o)
|
||||
o.id = #LoadedObjects.Particles
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
end
|
||||
|
||||
function Particle:kill()
|
||||
if self.light ~= nil then
|
||||
if self.light then
|
||||
self.light:kill()
|
||||
end
|
||||
if self.id ~= nil then
|
||||
for _, e in pairs(LoadedObjects.Particles) do
|
||||
if e.id > self.id then
|
||||
e.id = e.id - 1
|
||||
end
|
||||
end
|
||||
table.remove(LoadedObjects.Particles,self.id)
|
||||
end
|
||||
self = nil
|
||||
self.dead = true
|
||||
end
|
||||
|
||||
function Particle:handleAnimation()
|
||||
@@ -84,7 +74,7 @@ function Particle:handleAnimation()
|
||||
self.sprite_alpha = self.sprite_alpha_base*(self.time-self.timer)/self.time
|
||||
end
|
||||
|
||||
if self.body ~= nil then
|
||||
if self.body then
|
||||
self.body:animate()
|
||||
self:draw(self.body)
|
||||
end
|
||||
@@ -100,6 +90,15 @@ function Particle:doLogic()
|
||||
end
|
||||
end
|
||||
|
||||
function cleanDeadParticles()
|
||||
for i=1, #LoadedObjects.Particles do
|
||||
part = LoadedObjects.Particles[i]
|
||||
if part.kill then
|
||||
table.remove(LoadedObjects.Particles,i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Particle:doPhysics()
|
||||
-- horizontal collision
|
||||
self:moveX(
|
||||
@@ -118,3 +117,16 @@ function Particle:debug()
|
||||
love.graphics.setColor(0,1,1)
|
||||
love.graphics.circle("fill", -Camera.pos.x + self.pos.x, -Camera.pos.y + self.pos.y, 1)
|
||||
end
|
||||
|
||||
---------------
|
||||
|
||||
function cleanDeadParticles()
|
||||
for i=1, #LoadedObjects.Particles do
|
||||
part = LoadedObjects.Particles[i]
|
||||
if part and part.dead then
|
||||
table.remove(LoadedObjects.Particles,i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------
|
||||
|
||||
@@ -80,8 +80,6 @@ function Player:new(x,y)
|
||||
light_data.color = nil
|
||||
o.light = Light:new(o.pos.x,o.pos.y,light_data)
|
||||
|
||||
o:id()
|
||||
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
return o
|
||||
|
||||
Reference in New Issue
Block a user