diff options
-rw-r--r-- | diplomacy/engine/game.py | 16 | ||||
-rw-r--r-- | diplomacy/server/server.py | 7 |
2 files changed, 16 insertions, 7 deletions
diff --git a/diplomacy/engine/game.py b/diplomacy/engine/game.py index 52ade4f..542bb27 100644 --- a/diplomacy/engine/game.py +++ b/diplomacy/engine/game.py @@ -475,9 +475,23 @@ class Game(Jsonable): return self.powers.keys() def get_dummy_power_names(self): - """ Return sequence of dummy power objects. """ + """ Return sequence of dummy power names. """ return set(power_name for power_name in self.get_map_power_names() if self.is_dummy(power_name)) + def get_dummy_unordered_power_names(self): + """ Return a sequence of playable dummy power names + without orders but still orderable and with orderable locations. + """ + return [power_name for power_name in self.get_map_power_names() if + # power must not be controlled by a user + self.is_dummy(power_name) + # power must be still playable + and not self.get_power(power_name).is_eliminated() + # power must not have yet orders + and not self.get_orders(power_name) + # power must have orderable locations + and self.get_orderable_locations(power_name)] + def get_controllers(self): """ Return a dictionary mapping each power name to its current controller name.""" return {power.name: power.get_controller() for power in self.powers.values()} diff --git a/diplomacy/server/server.py b/diplomacy/server/server.py index ee585c3..120e893 100644 --- a/diplomacy/server/server.py +++ b/diplomacy/server/server.py @@ -534,12 +534,7 @@ class Server(): """ updated = False if server_game.is_game_active or server_game.is_game_paused: - dummy_power_names = [] - for power_name in server_game.get_dummy_power_names(): - power = server_game.get_power(power_name) - if power.is_dummy() and not power.is_eliminated() and not power.does_not_wait(): - # This dummy power needs either orders, or wait flag to be set to False. - dummy_power_names.append(power_name) + dummy_power_names = server_game.get_dummy_unordered_power_names() if dummy_power_names: # Update registry of dummy powers. self.games_with_dummy_powers[server_game.game_id] = dummy_power_names |