def create_player_dialogs(entity: Entity) -> List[ComponentDialogRender]: from src.systems.ui.info import SystemInfo from src.systems.word.move import SystemMove from src.systems.ui.system_exit import SystemExit from src.systems.unit.inventory import SystemInventory renderings: List[ComponentDialogRender] = [ ComponentDialogRender(system_type=SystemInfo, entity_id=entity.get_uuid(), component=Component, next_dialog=entity.get_uuid()), ComponentDialogRender(system_type=SystemExit, entity_id=entity.get_uuid(), component=Component, next_dialog=entity.get_uuid()), ComponentDialogRender(system_type=SystemMove, entity_id=entity.get_uuid(), component=ComponentPosition, next_dialog=entity.get_uuid()), ComponentDialogRender(system_type=SystemInventory, entity_id=entity.get_uuid(), component=ComponentInventory, next_dialog=entity.get_uuid()), ] return renderings
def new_welcome() -> Entity: components: Dict[Type[Component], Component] = { ComponentWelcome: ComponentWelcome() } entity: Entity = Entity( components=components ) return entity
def enable_potion(self, scene: Scene, item_entity_id: UUID, component_inventory: ComponentInventory, component_potion: ComponentPotion, player: Entity) -> None: if system := scene.get_system(SystemUnitHealthy): system: SystemUnitHealthy system.add_healthy(healthy=component_potion.hp, entity_id=player.get_uuid(), scene=scene)
def new_entity_items(scene: Scene, player: Entity) -> UUID: entity: Entity = Entity( tags=["Items"] ) renderings: List[ComponentDialogRender] = [ ComponentDialogRender( system_type=SystemItem, entity_id=player.get_uuid(), component=ComponentInventory, next_dialog=player.get_uuid() ), ] dialog: ComponentDialog = ComponentDialog( renderings=renderings ) entity.add_component(dialog) scene.add_entity(entity=entity) return entity.get_uuid()
def new_base_dialog() -> Entity: from src.systems.ui.system_exit import SystemExit entity: Entity = Entity() renderings: List[ComponentDialogRender] = [ ComponentDialogRender(system_type=SystemExit, entity_id=entity.get_uuid(), component=Component, next_dialog=entity.get_uuid()) ] dialog: ComponentDialog = ComponentDialog(renderings=renderings) entity.add_component(dialog) return entity
def new_world(width: int, height: int) -> Entity: """Создать мир с начальными пустышками картой""" word: List[List[List[Entity]]] = _new_word_coordinates(width=width, height=height) components: Dict[Type[Component], Component] = { ComponentCoordinates: ComponentCoordinates( word=word, width=width, height=height, ) } entity: Entity = Entity(components=components, tags=["word"]) return entity
def create_item_potion(scene: Scene, hp: int = 100) -> Entity: entity: Entity = Entity() renderings: List[ComponentDialogRender] = [ ComponentDialogRender( system_type=SystemPotion, entity_id=entity.get_uuid(), component=ComponentDialog, next_dialog=entity.get_uuid() ) ] entity.add_component(ComponentItem( name=f"Зелье воставноления жизней {hp}", system_type=SystemPotion )) entity.add_component(ComponentDialog(renderings=renderings)) entity.add_component(ComponentPotion(hp=hp)) scene.add_entity(entity=entity) return entity
def create_player_entity(scene: Scene) -> Entity: entity: Entity = Entity(tags=["player"]) renderings: List[ComponentDialogRender] = create_player_dialogs( entity=entity) dialog: ComponentDialog = ComponentDialog(renderings=renderings) entity_items: UUID = new_entity_items(scene=scene, player=entity) entity_potion: Entity = create_item_potion(scene=scene) items: List[UUID] = [entity_potion.get_uuid()] components: List[Component] = [ ComponentUnitHealthy(healthy=50, healthy_max=100, revival=0), ComponentPosition(x=0, y=0, speed=1), ComponentInventory(items=items, entity_items=entity_items, next_dialog=entity.get_uuid()), dialog ] for component in components: entity.add_component(component) return entity
def add_entity(self, entity: Entity) -> bool: if type(entity) in self.entities: return False self.entities[entity.get_uuid()] = entity return True
def _new_word_coordinates(width: int, height: int) -> List[List[List[Entity]]]: """Генерим карту мира заполняет Entity пустышками""" coordinates: List[List[List[Entity]]] = [[[Entity()] for _ in range(width)] for _ in range(height)] return coordinates