Fixed a bug when trying to pathfind when player is surrounded by inaccessible tiles
This commit is contained in:
parent
cc6033e8e4
commit
01cc77e146
|
@ -133,10 +133,11 @@ class Player(FightingEntity):
|
||||||
# For each tile that is reached by at least one Dijkstra, sort the
|
# For each tile that is reached by at least one Dijkstra, sort the
|
||||||
# different paths by distance to the player. For the technical bits :
|
# different paths by distance to the player. For the technical bits :
|
||||||
# The reduce function is a fold starting on the first element of the
|
# The reduce function is a fold starting on the first element of the
|
||||||
# iterable, and we associate the points to their distance, sort
|
# iterable, and we associate the points to their distance, sort
|
||||||
# along the distance, then only keep the points.
|
# along the distance, then only keep the points.
|
||||||
self.paths = {}
|
self.paths = {}
|
||||||
for y, x in reduce(set.union, [set(p.keys()) for p in predecessors]):
|
for y, x in reduce(set.union,
|
||||||
|
[set(p.keys()) for p in predecessors], set()):
|
||||||
self.paths[(y, x)] = [p for d, p in sorted(
|
self.paths[(y, x)] = [p for d, p in sorted(
|
||||||
[(distances[i][(y, x)], predecessors[i][(y, x)])
|
[(distances[i][(y, x)], predecessors[i][(y, x)])
|
||||||
for i in range(len(distances)) if (y, x) in predecessors[i]])]
|
for i in range(len(distances)) if (y, x) in predecessors[i]])]
|
||||||
|
|
Loading…
Reference in New Issue