from kennel.engine.systems.system import System, SystemType from kennel.engine.entities.entity import EntityManager from kennel.engine.components.component import ComponentType from kennel.app import logger class WorldSystem(System): def __init__(self, width: int, height: int): super().__init__(SystemType.WORLD) self.width = width self.height = height async def update(self, entity_manager: EntityManager, delta_time: float): entities = entity_manager.get_entities_with_component(ComponentType.POSITION) for entity in entities: position = entity.get_component(ComponentType.POSITION) if position is None: logger.error(f"Entity {entity} has no position component") continue position.x = max(0, min(self.width, position.x)) position.y = max(0, min(self.height, position.y)) entity.add_component(position)