class BulletManager: def __init__(self, bullet_stats: BulletStats): self._bullets = Group() self._bullet_stats = bullet_stats def add(self, bullet): self._bullets.add(bullet) def update(self, elapsed): self._bullets.update(elapsed) # Get rid of bullets that have disappeared for bullet in self._bullets.copy(): if bullet.rect.bottom <= 0 or bullet.rect.top >= config.screen_height: self._bullets.remove(bullet) def empty(self): self._bullets.empty() def draw(self, screen): self._bullets.draw(screen) def sprites(self): return self._bullets.sprites() def __iter__(self): return self._bullets.__iter__()
class SpriteGroup: ALL_SPRITES = Group() def __init__(self): self.sprites = Group() @property def children(self): return self.sprites def add(self, sprite: Sprite): self.ALL_SPRITES.add(sprite) self.sprites.add(sprite) def remove(self, sprite: Sprite): self.ALL_SPRITES.remove(sprite) self.sprites.remove(sprite) def update(self): self.sprites.update() def draw(self, screen): for sprite in self.sprites: if hasattr(sprite, 'on_draw'): sprite.on_draw(screen) sprite.draw(screen) def empty(self): return self.sprites.empty() def __iter__(self): return self.sprites.__iter__() def __len__(self): return len(self.sprites)