aboutsummaryrefslogtreecommitdiff
path: root/kennel/engine/systems/system.py
blob: 0e51f3a3054a5204639091b54295740eb2172aea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)