diff options
author | Philip Paquette <pcpaquette@gmail.com> | 2019-08-07 19:55:20 -0400 |
---|---|---|
committer | Philip Paquette <pcpaquette@gmail.com> | 2019-08-08 10:06:58 -0400 |
commit | 3dd0ecee0af381bf9fa19137bcb66b16b9993992 (patch) | |
tree | 8dafe98610573d8f04d4e6df32a8254ed8f6ccd4 | |
parent | d5092d3c1306dea4ddebd54c591791903a2c5df4 (diff) |
DAIDE - Assign bot to a specific power if 'POW:' in NME request
-rw-r--r-- | diplomacy/daide/request_managers.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/diplomacy/daide/request_managers.py b/diplomacy/daide/request_managers.py index 4d29189..085c5ef 100644 --- a/diplomacy/daide/request_managers.py +++ b/diplomacy/daide/request_managers.py @@ -495,7 +495,7 @@ def on_accept_request(server, request, connection_handler, game): :param game: the game :return: the list of responses """ - _, _, token, power_name = utils.get_user_connection(server.users, game, connection_handler) + _, daide_user, token, power_name = utils.get_user_connection(server.users, game, connection_handler) response = None accept_response = request.response_bytes @@ -503,12 +503,24 @@ def on_accept_request(server, request, connection_handler, game): if bytes(lead_token) == bytes(tokens.MAP): - # find next available power + # Assigning a power to the user if not power_name: - power_names = sorted([power_name for power_name, power in game.powers.items() if not power.is_controlled()]) - if not power_names: + uncontrolled_powers = [pow_name for pow_name, power in game.powers.items() + if not power.is_eliminated() and not power.is_controlled()] + if not uncontrolled_powers: return [responses.OFF()] - power_name = power_names[0] + + # 1 - Trying to respect the choice specified by the DAIDE user + # i.e. if the Daide client is 'FRA:Dumbbot', it wants to be assigned to a power starting with 'FRA' + if ':' in daide_user.client_name: + prefix = daide_user.client_name.split(':')[0].upper() + selected_powers = [pow_name for pow_name in uncontrolled_powers if pow_name.upper().startswith(prefix)] + if selected_powers: + power_name = selected_powers[0] + + # 2 - Otherwise, assigning to the first uncontrolled power + if not power_name: + power_name = sorted(uncontrolled_powers)[0] join_game_request = internal_requests.JoinGame(game_id=game.game_id, power_name=power_name, |