CrashOverrideX
Sealing v8.1 Subjectively Aware Standard for Hugging Face. Clean Model & Knowledge release.
a3e5f70 | from settings import * | |
| from timer import Timer | |
| class Evolution: | |
| def __init__(self, frames, start_monster, end_monster, font, end_evolution, star_frames): | |
| self.display_surface = pygame.display.get_surface() | |
| self.start_monster_surf = pygame.transform.scale2x(frames[start_monster]['idle'][0]) | |
| self.end_monster_surf = pygame.transform.scale2x(frames[end_monster]['idle'][0]) | |
| self.timers = { | |
| 'start': Timer(800, autostart = True), | |
| 'end': Timer(1800, func = end_evolution) | |
| } | |
| # star animation | |
| self.star_frames = [pygame.transform.scale2x(frame) for frame in star_frames] | |
| self.frame_index = 0 | |
| # screen tint | |
| self.tint_surf = pygame.Surface(self.display_surface.get_size()) | |
| self.tint_surf.set_alpha(200) | |
| # white tint | |
| self.start_monster_surf_white = pygame.mask.from_surface(self.start_monster_surf).to_surface() | |
| self.start_monster_surf_white.set_colorkey('black') | |
| self.tint_amount, self.tint_speed = 0, 80 | |
| self.start_monster_surf_white.set_alpha(self.tint_amount) | |
| # text | |
| self.start_text_surf = font.render(f'{start_monster} is evolving', False, COLORS['black']) | |
| self.end_text_surf = font.render(f'{start_monster} evolved into {end_monster}', False, COLORS['black']) | |
| def display_stars(self, dt): | |
| self.frame_index += 20 * dt | |
| if self.frame_index < len(self.star_frames): | |
| frame = self.star_frames[int(self.frame_index)] | |
| rect = frame.get_frect(center = (WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2)) | |
| self.display_surface.blit(frame, rect) | |
| def update(self, dt): | |
| for timer in self.timers.values(): | |
| timer.update() | |
| if not self.timers['start'].active: | |
| self.display_surface.blit(self.tint_surf, (0,0)) | |
| if self.tint_amount < 255: | |
| rect = self.start_monster_surf.get_frect(center = (WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2)) | |
| self.display_surface.blit(self.start_monster_surf, rect) | |
| self.tint_amount += self.tint_speed * dt | |
| self.start_monster_surf_white.set_alpha(self.tint_amount) | |
| self.display_surface.blit(self.start_monster_surf_white, rect) | |
| text_rect = self.start_text_surf.get_frect(midtop = rect.midbottom + vector(0,20)) | |
| pygame.draw.rect(self.display_surface, COLORS['white'], text_rect.inflate(20,20), 0, 5) | |
| self.display_surface.blit(self.start_text_surf, text_rect) | |
| else: | |
| rect = self.end_monster_surf.get_frect(center = (WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2)) | |
| self.display_surface.blit(self.end_monster_surf, rect) | |
| text_rect = self.end_text_surf.get_frect(midtop = rect.midbottom + vector(0,20)) | |
| pygame.draw.rect(self.display_surface, COLORS['white'], text_rect.inflate(20,20), 0, 5) | |
| self.display_surface.blit(self.end_text_surf, text_rect) | |
| self.display_stars(dt) | |
| if not self.timers['end'].active: | |
| self.timers['end'].activate() |