Spaces:
Running
Running
| from __future__ import annotations | |
| import pygame | |
| class Explosion(pygame.sprite.Sprite): | |
| def __init__(self, pos: tuple[float, float], frames: list[pygame.Surface], frame_time: float = 0.06): | |
| super().__init__() | |
| self.frames = frames | |
| self.frame_time = float(frame_time) | |
| self.t = 0.0 | |
| self.idx = 0 | |
| self.image = self.frames[0] if self.frames else pygame.Surface((1, 1), pygame.SRCALPHA) | |
| self.rect = self.image.get_rect(center=pos) | |
| self.pos = pygame.Vector2(pos) | |
| def update(self, dt: float): | |
| if not self.frames: | |
| self.kill() | |
| return | |
| self.t += dt | |
| while self.t >= self.frame_time: | |
| self.t -= self.frame_time | |
| self.idx += 1 | |
| if self.idx >= len(self.frames): | |
| self.kill() | |
| return | |
| center = self.rect.center | |
| self.image = self.frames[self.idx] | |
| self.rect = self.image.get_rect(center=center) | |