diff options
| author | Elizabeth Hunt <elizabeth@simponic.xyz> | 2024-08-20 17:34:18 -0700 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth@simponic.xyz> | 2024-08-20 17:34:18 -0700 |
| commit | b4140460014d1fc134df9127600f6da2346376e3 (patch) | |
| tree | 5bee11079f3ab9e3fd5d2a68cee483c2c33557f4 /kennel/engine/systems/system.py | |
| parent | 6f223d2462df5e08856fb83fd76773a8af33acf9 (diff) | |
| download | kennel.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.py | 31 |
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) |
