def get_blocked_tiles(world: World) -> Set[Tuple[int, int]]:
    blocked = set()
    blocked.update(
        (position.x, position.y)
        for _, (position, _) in world.get_components(Position, Player)
    )
    blocked.update(
        (position.x, position.y)
        for _, (position, _) in world.get_components(Position, Monster)
    )
    return blocked
Exemple #2
0
def debug_world(world: esper.World, *with_components: Type[Any]) -> None:
    data = []
    for ent, _ in world.get_components(*with_components):
        components = world.components_for_entity(ent)
        data.append(dict({"ent": ent}, **{str(type(c)): c
                                          for c in components}))
    print(tabulate.tabulate(data))
Exemple #3
0
def assign_positions(world: esper.World, config: List[Point]):
    logger = logging.getLogger(__name__)
    components = {}
    for ent, (hover, pos) in world.get_components(Hover, Position):
        components[ent] = (hover, pos)
    for point in config:
        if len(components) == 0:
            break
        distances = []
        for ent, (_, pos) in components.items():
            center = pos.center
            distances.append((distance(point, center), ent))
        distances.sort()
        # logger.debug(f'Point {point}: {distances}')
        for closer in distances:
            # logger.debug(f'Assigning point {point} to entity {closer[1]}')
            hover = components[closer[1]][0]
            hover.target = point
            change_hover_state(world, closer[1], HoverState.MOVING)
            components.pop(closer[1])
            break