kennel/kennel/engine/systems/system.py

32 lines
853 B
Python
Raw Normal View History

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)