def __init__(self, screen_factory: ScreenFactory, level_num: int): screen = screen_factory.get_bundle().get_screen("game_paused") playing_last_level = level_num == screen_factory.get_bundle( ).last_level resume_game = TextMenuItem("RESUME GAME", lambda: None) restart_level = TextMenuItem( "RESTART LEVEL", lambda: screen_factory.get_playfield_screen(level_num, skip_how_to_play=True)) skip_level = TextMenuItem( "SKIP LEVEL", lambda: screen_factory.get_playfield_screen( screen_factory.get_player_profile().next_level_to_play( level_num))) how_to_play = TextMenuItem("HOW TO PLAY", screen_factory.get_how_to_play_screen) main_menu = TextMenuItem("BACK TO MAIN MENU", screen_factory.get_main_menu) before_last_level_menu: Tuple[MenuItem, ...] = \ (resume_game, restart_level, skip_level, how_to_play, main_menu) last_level_menu: Tuple[MenuItem, ...] = \ (resume_game, restart_level, how_to_play, main_menu) menu = Menu.with_defaults( last_level_menu if playing_last_level else before_last_level_menu, MenuLayout(position=screen.menu_position)) super().__init__(menu=menu, allow_going_back=True, screen=screen, semi_transparent=True)
def __init__(self, screen_factory: ScreenFactory): self.exiting = False self._get_exit_screen: Callable[[], ScreenController] = \ lambda: screen_factory.get_exit_screen(self._exit_callback) level_to_play = screen_factory.get_player_profile().first_not_completed_level screen = screen_factory.get_bundle().get_screen("main_menu") menu = Menu.with_defaults(( TextMenuItem("START GAME", lambda: screen_factory.get_playfield_screen(level_to_play)), TextMenuItem("CHOOSE LEVEL", screen_factory.get_choose_level_screen), TextMenuItem("EXIT", self._get_exit_screen) ), MenuLayout(position=screen.menu_position)) super().__init__(menu=menu, allow_going_back=True, screen=screen)
def __init__(self, screen_factory: ScreenFactory, level_num: int, show_how_to_play: bool = False): bundle = screen_factory.get_bundle() profile = screen_factory.get_player_profile() super().__init__(screen=bundle.get_screen("playfield")) self.screen_factory = screen_factory self.level = Level(bundle.get_level_template(level_num)) self.gui_consts = screen_factory.get_bundle().get_gui_consts() self.printing_animation = Animation(bundle.get_sprite("printing_receipt"), PRINTING_RECEIPT_ANIMATION_FRAME_TIME) self.level_completed_animation_player: Optional[AnimationPlayer] = None self.how_to_play_shown = not show_how_to_play profile.last_played_level = level_num
def __init__(self, screen_factory: ScreenFactory): bundle = screen_factory.get_bundle() screen = bundle.get_screen("choose_level") item_space = bundle.get_gui_consts().get_position( GuiPosition.LEVEL_ITEM_SPACE) menu = Menu.with_defaults( tuple([ LevelMenuItem(level_num, screen_factory) for level_num in range(bundle.num_levels) ]), MenuLayout(columns=5, rows=4, position=screen.menu_position, item_space=Size(item_space.x, item_space.y))) super().__init__(menu=menu, allow_going_back=True, screen=screen) self.select_and_scroll_to_item( screen_factory.get_player_profile().last_played_level) self.level_selected_color = bundle.get_gui_consts().get_color( GuiColor.LEVEL_SELECTED_COLOR)
def __init__(self, screen_factory: ScreenFactory, level_score: LevelScore): current_level_num = level_score.level_num last_level_completed = current_level_num == screen_factory.get_bundle( ).last_level next_level = TextMenuItem( "PLAY NEXT LEVEL", lambda: screen_factory.get_playfield_screen( screen_factory.get_player_profile().next_level_to_play( current_level_num))) finish_game = TextMenuItem("FINISH GAME", screen_factory.get_victory_screen) restart_level = TextMenuItem( "RESTART LEVEL", lambda: screen_factory.get_playfield_screen(current_level_num, skip_how_to_play=True)) main_menu = TextMenuItem("BACK TO MAIN MENU", screen_factory.get_main_menu) more_levels_to_play_menu: Tuple[MenuItem, ...] = (next_level, restart_level, main_menu) last_level_finished_menu: Tuple[MenuItem, ...] = (finish_game, restart_level) screen = screen_factory.get_bundle().get_screen("level_completed") menu = Menu.with_defaults( last_level_finished_menu if last_level_completed else more_levels_to_play_menu, MenuLayout(position=screen.menu_position)) super().__init__(menu=menu, screen=screen, semi_transparent=True) player_profile = screen_factory.get_player_profile() self.level_score = level_score self.prev_level_score = player_profile.complete_level(level_score)
def __init__(self, screen_factory: ScreenFactory, exit_callback: Callable[[], None]): screen = screen_factory.get_bundle().get_screen("exit") menu = Menu.with_defaults( tuple([ TextMenuItem("YES", self._exit), TextMenuItem("NO", lambda: None) ]), MenuLayout(columns=2, position=screen.menu_position, item_space=Size(8, 0))) super().__init__(menu=menu, allow_going_back=True, screen=screen, semi_transparent=True) self.exit_callback = exit_callback
def __init__(self, screen_factory: ScreenFactory): screen = screen_factory.get_bundle().get_screen("victory") menu = Menu.with_defaults(tuple([ TextMenuItem("MAIN MENU", screen_factory.get_main_menu) ]), MenuLayout(position=screen.menu_position)) super().__init__(menu=menu, screen=screen)
def __init__(self, screen_factory: ScreenFactory): screen = screen_factory.get_bundle().get_screen("how_to_play") menu = Menu.with_defaults(tuple([ TextMenuItem("OK", lambda: None) ]), MenuLayout(position=screen.menu_position)) super().__init__(menu=menu, allow_going_back=True, screen=screen, semi_transparent=True)
def __init__(self, level_num: int, screen_factory: ScreenFactory): super().__init__( lambda: screen_factory.get_playfield_screen(level_num)) self.level_num = level_num self.player_profile = screen_factory.get_player_profile() self.gui_consts = screen_factory.get_bundle().get_gui_consts()