from abc import abstractmethod import pygame.time from level.Level import Level from level.elements.LoadedLevel import LoadedLevel from level.selection.ScreenManager import ScreenManager from physics.SpriteManager import SpriteManager, DrawLayers from physics.TickData import TickData from sprite.SpritesheetManager import SpritesheetManager from ui_elements.KeyManager import KeyManager from ui_elements.TextLabel import TextLabel class LevelScreenManager(ScreenManager): def __init__(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, main_loop, level: Level): super().__init__(sprite_manager, spritesheet_manager, main_loop) self.level = level self.loaded_level = LoadedLevel(sprite_manager, spritesheet_manager) self.loaded_level.level_screen_manager = self self.loaded_level.load_level(self.level) self.back_button = TextLabel('BACK [ESC]', 635, 460, font_size=30) self.back_button.position_scale.scale = (0.5, 0.5) self.add_element(DrawLayers.UI, self.back_button) self.back_button.add_click_listener(lambda click: self.back_to_level_selection()) def initialize(self): pass def destroy(self): super().destroy() self.loaded_level.destroy_level() def tick(self, tick_data: TickData): if tick_data.key_manager.is_keymap_down(KeyManager.KEY_ESCAPE): self.back_to_level_selection() pygame.time.delay(250) def back_to_level_selection(self): self.main_loop.select_level_selection(self.level.theme) def player_death(self): self.main_loop.player_death(self.level) def player_success(self): self.main_loop.player_success(self.level)