From 45726367eee475a7717d7dcad78895de348f0b97 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Thu, 5 Sep 2024 00:15:14 -0700 Subject: checkpoint; working position updates --- kennel/kennel.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'kennel/kennel.py') 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)) -- cgit v1.3