X-Git-Url: https://git.yukkurigames.com/?p=python-bulletml.git;a=blobdiff_plain;f=bulletml%2Fimpl.py;h=0c40f1ebd2596752ab10861f9042cdb6c82cfd31;hp=f7edd5a458d05ca0399a70e3ac7ce4f1549f70d3;hb=4c64c8e05ac3b3c452255a4987bd67a2892a8007;hpb=4c9526a453f57e54c603dcad10d2346d06b69fe4 diff --git a/bulletml/impl.py b/bulletml/impl.py index f7edd5a..0c40f1e 100644 --- a/bulletml/impl.py +++ b/bulletml/impl.py @@ -131,9 +131,11 @@ class Bullet(object): rank - game difficulty, 0 to 1, default 0.5 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 + x, y, direction, speed, target, rank, tags, appearance, radius - same as the above attributes actions - internal action list Action - custom Action constructor @@ -141,14 +143,17 @@ class Bullet(object): """ def __init__(self, x=0, y=0, direction=0, speed=0, target=None, - actions=(), rank=0.5, tags=(), appearance=None): + actions=(), rank=0.5, tags=(), appearance=None, + radius=0.5): self.x = self.px = x self.y = self.py = y + self.radius = radius self.mx = 0 self.my = 0 self.direction = direction self.speed = speed self.vanished = False + self.finished = False self.target = target self.rank = rank self.tags = set(tags) @@ -185,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 @@ -232,8 +219,14 @@ class Bullet(object): """ created = [] + finished = self.vanished for action in self.actions: action.step(self, created) + finished = finished and action.finished + if finished: + for action in self.actions: + finished = finished and action.finished + self.finished = finished speed = self.speed direction = self.direction