Optimize update_reachable_regions using the new region cache, it is almost twice as fast now
This commit is contained in:
parent
e4fef05d53
commit
d608d5ca30
|
@ -318,14 +318,14 @@ class CollectionState(object):
|
||||||
self.collect(item, True)
|
self.collect(item, True)
|
||||||
|
|
||||||
def update_reachable_regions(self, player):
|
def update_reachable_regions(self, player):
|
||||||
player_regions = [region for region in self.world.regions if region.player == player]
|
player_regions = self.world.get_regions(player)
|
||||||
self.stale[player] = False
|
self.stale[player] = False
|
||||||
rrp = self.reachable_regions[player]
|
rrp = self.reachable_regions[player]
|
||||||
new_regions = True
|
new_regions = True
|
||||||
reachable_regions_count = len(rrp)
|
reachable_regions_count = len(rrp)
|
||||||
while new_regions:
|
while new_regions:
|
||||||
possible = [region for region in player_regions if region not in rrp]
|
player_regions = [region for region in player_regions if region not in rrp]
|
||||||
for candidate in possible:
|
for candidate in player_regions:
|
||||||
if candidate.can_reach_private(self):
|
if candidate.can_reach_private(self):
|
||||||
rrp.add(candidate)
|
rrp.add(candidate)
|
||||||
new_regions = len(rrp) > reachable_regions_count
|
new_regions = len(rrp) > reachable_regions_count
|
||||||
|
|
Loading…
Reference in New Issue