aboutsummaryrefslogtreecommitdiff
path: root/kennel/engine/systems/system.py
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2024-08-20 17:34:18 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2024-08-20 17:34:18 -0700
commitb4140460014d1fc134df9127600f6da2346376e3 (patch)
tree5bee11079f3ab9e3fd5d2a68cee483c2c33557f4 /kennel/engine/systems/system.py
parent6f223d2462df5e08856fb83fd76773a8af33acf9 (diff)
downloadkennel.hatecomputers.club-b4140460014d1fc134df9127600f6da2346376e3.tar.gz
kennel.hatecomputers.club-b4140460014d1fc134df9127600f6da2346376e3.zip
init commit with base ECS and Network System
Diffstat (limited to 'kennel/engine/systems/system.py')
-rw-r--r--kennel/engine/systems/system.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/kennel/engine/systems/system.py b/kennel/engine/systems/system.py
new file mode 100644
index 0000000..0e51f3a
--- /dev/null
+++ b/kennel/engine/systems/system.py
@@ -0,0 +1,31 @@
+from enum import Enum
+from kennel.engine.entities.entity import EntityManager
+from abc import abstractmethod
+
+
+class SystemType(str, Enum):
+ NETWORK = "NETWORK"
+
+
+class System:
+ def __init__(self, system_type: SystemType):
+ self.system_type = system_type
+
+ @abstractmethod
+ async def update(self, entity_manager: EntityManager, delta_time: float):
+ pass
+
+
+class SystemManager:
+ def __init__(self):
+ self.systems = {}
+
+ def add_system(self, system: System) -> None:
+ self.systems[system.system_type] = system
+
+ def get_system(self, system_type: SystemType) -> System:
+ return self.systems.get(system_type)
+
+ async def update(self, entity_manager: EntityManager, delta_time: float) -> None:
+ for system in self.systems.values():
+ await system.update(entity_manager, delta_time)