From ad8d3c945fbee656aba4b7f76826141d8650582d Mon Sep 17 00:00:00 2001 From: nejdetckenobi Date: Sat, 3 Oct 2026 22:57:08 +0300 Subject: [PATCH] Removes ecs --- ecs.py | 57 --------------------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 ecs.py diff --git a/ecs.py b/ecs.py deleted file mode 100644 index 6762fbb..0000000 --- a/ecs.py +++ /dev/null @@ -1,57 +0,0 @@ -from dataclasses import dataclass, field -from typing import Any, Iterator, Protocol - -type Entity = int -type Archetype = frozenset[type] -type ComponentMap = dict[type, Any] -type EntityComponentStorage = dict[Entity, ComponentMap] - - -class System(Protocol): - @classmethod - def process(cls, world: "World") -> None: ... - - -@dataclass -class World: - registry: dict[Archetype, EntityComponentStorage] = field(default_factory=dict) - next_entity_index: int = 0 - systems: list[type[System]] = field(default_factory=list) - - def generate_id(self) -> int: - self.next_entity_index += 1 - return self.next_entity_index - - def spawn(self, *components) -> int: - archetype = frozenset([type(c) for c in components]) - - if archetype not in self.registry: - self.registry[archetype] = {} - - entity = self.generate_id() - self.registry[archetype][entity] = {type(c): c for c in components} - return entity - - def query( - self, *component_types, exact=False - ) -> Iterator[tuple[Entity, ComponentMap]]: - component_subset_signature = frozenset(component_types) - for archetype, entity_component_storage in self.registry.items(): - if (exact and component_subset_signature == archetype) or ( - not exact and component_subset_signature.issubset(archetype) - ): - for entity, component_storage in entity_component_storage.items(): - yield entity, component_storage - - def get_components(self, entity: int, pop=False): - for componentstorage in self.registry.values(): - if entity in componentstorage: - if pop: - return componentstorage.pop(entity, None) - else: - return componentstorage[entity] - return None - - def tick(self): - for system in self.systems: - system.process(self)