aboutsummaryrefslogtreecommitdiff
path: root/kennel/kennel.py
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2024-09-02 20:10:35 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2024-09-02 20:10:35 -0700
commitd35ab6cc851d3fc85f55cfb5676f8dc3552fab24 (patch)
treebef9784e90e2e8f8f5b9e05300238747b775e618 /kennel/kennel.py
parenta0a2068b66204d7d06eb3c3b4aa61b28469121f6 (diff)
downloadkennel.hatecomputers.club-d35ab6cc851d3fc85f55cfb5676f8dc3552fab24.tar.gz
kennel.hatecomputers.club-d35ab6cc851d3fc85f55cfb5676f8dc3552fab24.zip
a bit more progress
Diffstat (limited to 'kennel/kennel.py')
-rw-r--r--kennel/kennel.py16
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))