aboutsummaryrefslogtreecommitdiff
path: root/diplomacy/engine
diff options
context:
space:
mode:
authornotoraptor <stevenbocco@gmail.com>2019-07-18 15:28:17 -0400
committerPhilip Paquette <pcpaquette@gmail.com>2019-07-19 10:01:52 -0400
commit34a0625f605bce0c72c5a3c4246ec8ba8a0e72e9 (patch)
tree1cd26a8057079d1f4fd20e5d73afe43b5535272b /diplomacy/engine
parent978b51fccb428c76b5d912ab748a313efa18676a (diff)
[python] Add a new method to retrieve powers available for bots.
Diffstat (limited to 'diplomacy/engine')
-rw-r--r--diplomacy/engine/game.py16
1 files changed, 15 insertions, 1 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()}