X-Git-Url: https://git.yukkurigames.com/?p=python-bulletml.git;a=blobdiff_plain;f=bulletml%2Fimpl.py;h=a2e8decebd9f970dab01ee170e0e013bf1ee7972;hp=4785ef2c8c17094076b38e49ceef4486fb9910b7;hb=261aefba910dfd4511284c48e5e0b136a1f7f32a;hpb=75cf6c9dd1fa5aef18f11e08bcc3728c1175b1c4 diff --git a/bulletml/impl.py b/bulletml/impl.py index 4785ef2..a2e8dec 100644 --- a/bulletml/impl.py +++ b/bulletml/impl.py @@ -132,6 +132,7 @@ class Bullet(object): tags - string tags set by the running actions appearance - string used to set bullet appearance radius - radius for collision + finished - true if all actions are finished and the bullet vanished Contructor Arguments: x, y, direction, speed, target, rank, tags, appearance, radius @@ -152,6 +153,7 @@ class Bullet(object): self.direction = direction self.speed = speed self.vanished = False + self.finished = False self.target = target self.rank = rank self.tags = set(tags) @@ -188,24 +190,6 @@ class Bullet(object): else: return atan2(target_x - self.x, target_y - self.y) - @property - def finished(self): - """Check if this bullet is finished running. - - A bullet is finished when it has vanished, and all its - actions have finished. - - If this is true, the bullet should be removed from the screen. - (You will probably want to cull it under other circumstances - as well). - """ - if not self.vanished: - return False - for action in self.actions: - if not action.finished: - return False - return True - def vanish(self): """Vanish this bullet and stop all actions.""" self.vanished = True @@ -235,8 +219,11 @@ class Bullet(object): """ created = [] + finished = self.vanished for action in self.actions: action.step(self, created) + finished = finished and action.finished + self.finished = finished speed = self.speed direction = self.direction