pocket-friends/pocket_friends/surfaces/selection_info.py

64 lines
2.4 KiB
Python

"""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'