Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/libs/bulletclass.lua b/src/libs/bulletclass.lua
- index 967d69d..0ca8758 100644
- --- a/src/libs/bulletclass.lua
- +++ b/src/libs/bulletclass.lua
- @@ -1,40 +1,73 @@
- local bullet = {}
- +bullet.__dead_pool = {}
- +bullet.__dead_pool_max = 100
- +bullet.__live_pool = {}
- +
- function bullet.new(atlasDrawCache)
- - local self={}
- - self._atlasDrawCache=atlasDrawCache
- - self.getAtlasDrawCache=bullet.getAtlasDrawCache
- - self.update=bullet.update
- - self.draw=bullet.draw
- + local self
- + if #bullet.__dead_pool > 0 then
- + self = table.remove(bullet.__dead_pool)
- + else
- + self = {}
- + self._atlasDrawCache=atlasDrawCache
- + self.getAtlasDrawCache=bullet.getAtlasDrawCache
- + self.update=bullet.update
- + self.draw=bullet.draw
- + self.getOwner=bullet.getOwner
- + self.setOwner=bullet.setOwner
- + self.getDamage=bullet.getDamage
- + self.setDamage=bullet.setDamage
- + self.getDuration=bullet.getDuration
- + self.setDuration=bullet.setDuration
- + self.getSpeed=bullet.getSpeed
- + self.setSpeed=bullet.setSpeed
- + self.getX=bullet.getX
- + self.setX=bullet.setX
- + self.getY=bullet.getY
- + self.setY=bullet.setY
- + self.getAngle=bullet.getAngle
- + self.setAngle=bullet.setAngle
- + self.getRemove=bullet.getRemove
- + self.setRemove=bullet.setRemove
- + self.getRadius=bullet.getRadius
- + self.setRadius=bullet.setRadius
- + table.insert(bullet.__live_pool,self)
- + end
- + bullet.__reset(self)
- + return self
- +end
- +
- +function bullet.__reset(self)
- self._owner=nil --init
- - self.getOwner=bullet.getOwner
- - self.setOwner=bullet.setOwner
- self._damage=nil --init
- - self.getDamage=bullet.getDamage
- - self.setDamage=bullet.setDamage
- self._duration=nil --init
- - self.getDuration=bullet.getDuration
- - self.setDuration=bullet.setDuration
- self._speed=nil --init
- - self.getSpeed=bullet.getSpeed
- - self.setSpeed=bullet.setSpeed
- self._x=nil --init
- - self.getX=bullet.getX
- - self.setX=bullet.setX
- self._y=nil --init
- - self.getY=bullet.getY
- - self.setY=bullet.setY
- self._angle=nil --init
- - self.getAngle=bullet.getAngle
- - self.setAngle=bullet.setAngle
- - self._remove=nil
- - self.getRemove=bullet.getRemove
- - self.setRemove=bullet.setRemove
- - self._radius=16
- - self.getRadius=bullet.getRadius
- - self.setRadius=bullet.setRadius
- - return self
- + self._remove=nil --init
- + self._radius=16 --init
- +end
- +
- +function bullet:destroy()
- + for index,obj in pairs(bullet.__live_pool) do
- + if obj == self then
- + if #bullet.__dead_pool < bullet.__dead_pool_max then
- + table.insert(bullet.__dead_pool,
- + table.remove(bullet.__live_pool,index))
- + else
- + table.remove(bullet.__live_pool,index)
- + end
- + return true -- object has been marked as dead
- + end
- + end
- + return false -- object was not in live_pool
- +end
- +
- +function bullet:getAtlasDrawCache()
- + return self._atlasDrawCache
- end
- function bullet:update(dt)
- @@ -68,10 +101,6 @@ function bullet:draw(x,y,scale)
- end
- end
- -function bullet:getAtlasDrawCache()
- - return self._atlasDrawCache
- -end
- -
- function bullet:getOwner()
- return self._owner
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement