32 lines
853 B
Python
32 lines
853 B
Python
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)
|