"""Module for selection info. Shows egg stats after an egg has been selected from the starting screen. Contains the surface object to be rendered.""" import pygame from pocket_friends.elements import sprites from pocket_friends.elements import surface class Surface(surface.GameSurface): """ Surface object for the selection info screen. Contains the selected egg, egg properties, and description in a scrollable text box. Child class of surface.GameSurface. """ def __init__(self, game_res: tuple, resources_dir: str, game_fps: int, **kwargs: str): """ Create a selection info surface object. Args: game_res: The internal resolution of the surface. resources_dir: The path of the game's main resource directory. game_fps: How many frames per second the game will run at. Keyword Args: selected_egg: The egg that was selected by the previous screen. """ super().__init__(game_res, resources_dir, game_fps) self._selected_egg = None for key in kwargs.keys(): if key == 'selected_egg': self._selected_egg = kwargs.get(key) egg = sprites.SelectionEgg(self._selected_egg, resources_dir) egg.rect.x = 8 egg.rect.y = 3 self._sprites.add(egg) self._info_text = sprites.InfoText(resources_dir, game_res[0], egg.description) self._info_icons = sprites.EggInfo(resources_dir, egg.contentedness, egg.metabolism, (32, 4)) def update(self): """ Draw objects on the screen and advance the surface logic by one frame; Handle user input. """ self.preprocess() self._info_text.draw(self) self._info_icons.draw(self) for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: self._info_text.scroll_down() if event.key == pygame.K_UP: self._info_text.scroll_up() if event.key == pygame.K_a: self.running = False self.additional_args = {'selected_color': self._selected_egg} self.next_surface = 'playground' if event.key == pygame.K_b: self.running = False self.additional_args = {'selected_color': self._selected_egg} self.next_surface = 'egg_select'