diff options
Diffstat (limited to 'kennel/kennel.py')
| -rw-r--r-- | kennel/kennel.py | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/kennel/kennel.py b/kennel/kennel.py index 1e23670..6852e4c 100644 --- a/kennel/kennel.py +++ b/kennel/kennel.py @@ -1,5 +1,5 @@ import uuid -from typing import List +from typing import List, Optional from kennel.config import config from kennel.engine.components.component import ComponentType @@ -9,7 +9,7 @@ from kennel.engine.game import Game from kennel.engine.systems.network import ( EntityPositionUpdateEvent, Event, - EventProcessor, + UpstreamEventProcessor, EventType, NetworkSystem, ) @@ -22,27 +22,22 @@ entity_manager = EntityManager() system_manager = SystemManager() -class KennelEventProcessor(EventProcessor): +class KennelEventProcessor(UpstreamEventProcessor): def accept( - self, entity_manager: EntityManager, event: Event | tuple[Event, str] - ) -> None: - if isinstance(event, tuple): - client_event, client_id = event - self._process_client_event(entity_manager, client_event, client_id) - return - - def _process_client_event( - self, entity_manager: EntityManager, event: Event, client_id: str - ) -> None: - if event.event_type == EventType.ENTITY_POSITION_UPDATE: - self._process_entity_position_update(entity_manager, event, client_id) + self, entity_manager: EntityManager, event: tuple[Event, str] + ) -> Optional[Event]: + client_event, client_id = event + if client_event.event_type == EventType.ENTITY_POSITION_UPDATE: + return self._process_entity_position_update( + entity_manager, client_event, client_id + ) def _process_entity_position_update( self, entity_manager: EntityManager, event: EntityPositionUpdateEvent, client_id: str, - ) -> None: + ) -> Optional[Event]: entity = entity_manager.get_entity(event.data["id"]) if entity is None: logger.error(f"Entity(id={event.data['id']}) does not exist") @@ -60,6 +55,7 @@ class KennelEventProcessor(EventProcessor): entity.add_component(position) entity_manager.add_entity(entity) + return event system_manager.add_system(WorldSystem(config.WORLD_WIDTH, config.WORLD_HEIGHT)) |
