diff options
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) |
