diff options
Diffstat (limited to 'kennel')
| -rw-r--r-- | kennel/kennel.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/kennel/kennel.py b/kennel/kennel.py index bb0438c..a9ab4b8 100644 --- a/kennel/kennel.py +++ b/kennel/kennel.py @@ -8,6 +8,8 @@ from kennel.engine.systems.network import ( EventProcessor, Event, EventType, + Entity, + EntityPositionUpdateEvent, ) from kennel.engine.systems.world import WorldSystem from kennel.config import config @@ -35,24 +37,28 @@ class KennelEventProcessor(EventProcessor): self._process_entity_position_update(entity_manager, event, client_id) def _process_entity_position_update( - self, entity_manager: EntityManager, event: Event, client_id: str + self, + entity_manager: EntityManager, + event: EntityPositionUpdateEvent, + client_id: str, ) -> None: entity = entity_manager.get_entity(event.data["id"]) if entity is None: logger.error(f"Entity(id={event.data['id']}) does not exist") return controllable = entity.get_component(ComponentType.CONTROLLABLE) - if controllable is None: - logger.error(f"Entity {entity} is not controllable") - return - if controllable.by != client_id: + if controllable is None or controllable.by != client_id: logger.error(f"Entity {entity} is not controllable by client {client_id}") return position = entity.get_component(ComponentType.POSITION) if position is None: logger.error(f"Entity {entity} has no position") return + position.x = event.data["position"]["x"] + position.y = event.data["position"]["y"] + entity.add_component(position) + entity_manager.add_entity(entity) system_manager.add_system(WorldSystem(config.WORLD_WIDTH, config.WORLD_HEIGHT)) |
