aboutsummaryrefslogtreecommitdiff
path: root/kennel/kennel.py
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2024-09-05 00:15:14 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2024-09-05 00:15:14 -0700
commit45726367eee475a7717d7dcad78895de348f0b97 (patch)
tree937abae9cd74d8f99f149cf3c3ee534169c723f8 /kennel/kennel.py
parentc39367ac7e163395ae726bd169926004d4d99d67 (diff)
downloadkennel.hatecomputers.club-45726367eee475a7717d7dcad78895de348f0b97.tar.gz
kennel.hatecomputers.club-45726367eee475a7717d7dcad78895de348f0b97.zip
checkpoint; working position updates
Diffstat (limited to 'kennel/kennel.py')
-rw-r--r--kennel/kennel.py28
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))