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
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))
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