from level.Level import Level from level.elements.static.ReceiverLevelElement import ReceiverLevelElement from physics.SpriteManager import SpriteManager from physics.TickData import TickData from sprite.SpritesheetManager import SpritesheetManager class GoalDoorReceiverLevelElement(ReceiverLevelElement): def __init__(self, tile: dict, level: Level, level_screen_manager: 'LevelScreenManager'): super().__init__(tile, level, level_screen_manager) self.is_collider = False def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level): self.spritesheet = spritesheet_manager.get_sheet('goal_door') self.set_animation_state('open' if self.active_state else 'close') self.position_scale.position = self.tile['position'] def set_active(self, active: bool): super().set_active(active) self.set_animation_state('open' if self.active_state else 'close') self.is_collider = False self.register_collisions = self.active_state def tick(self, tick_data: TickData): super().tick(tick_data) for collision in self.get_collides_with(): if collision.secondary_sprite.id == 'player': if self.active_state: self.level_screen_manager.player_success()