X-Git-Url: https://git.yukkurigames.com/?p=python-bulletml.git;a=blobdiff_plain;f=bulletml%2Fimpl.py;h=a2e8decebd9f970dab01ee170e0e013bf1ee7972;hp=f7edd5a458d05ca0399a70e3ac7ce4f1549f70d3;hb=261aefba910dfd4511284c48e5e0b136a1f7f32a;hpb=4c9526a453f57e54c603dcad10d2346d06b69fe4 diff --git a/bulletml/impl.py b/bulletml/impl.py index f7edd5a..a2e8dec 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,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