1313BracketID = int
1414MapPoolMapVersionId = int
1515VetoTokensApplied = int
16- VetosMap = dict [MapPoolMapVersionId , VetoTokensApplied ]
16+ VetoesMap = dict [MapPoolMapVersionId , VetoTokensApplied ]
1717
1818
1919class PlayerVetoes :
2020 def __init__ (self ):
21- self ._vetoes : dict [BracketID , VetosMap ] = {}
21+ self ._vetoes : dict [BracketID , VetoesMap ] = {}
2222
23- def get_vetoes_for_bracket (self , bracket_id : BracketID ) -> VetosMap :
23+ def get_vetoes_for_bracket (self , bracket_id : BracketID ) -> VetoesMap :
2424 return self ._vetoes .get (bracket_id , {})
2525
2626 def to_dict (self ) -> dict :
@@ -56,38 +56,38 @@ def update_pools_veto_config(self, queues: dict[str, MatchmakerQueue]) -> list[P
5656
5757 pools_vetodata = self .extract_pools_veto_config (queues )
5858
59- if self .pools_veto_data != pools_vetodata :
60- self .pools_veto_data = pools_vetodata
61-
62- pool_maps_by_bracket = {
63- pool_data .matchmaker_queue_map_pool_id : set (pool_data .map_pool_map_version_ids )
64- for pool_data in self .pools_veto_data
65- }
66-
67- affected_players = []
68- for player in self .player_service .all_players :
69- # TODO: Can we avoid force adjusting veto selections for players.
70- adjusted_vetoes = self ._adjust_vetoes (player .vetoes ._vetoes )
71-
72- if adjusted_vetoes != player .vetoes ._vetoes :
73- tokens_amount_for_some_map_was_reduced = any (
74- map_id in pool_maps_by_bracket .get (bracket , set ())
75- and original_tokens > adjusted_vetoes .get (bracket , {}).get (map_id , 0 )
76- for bracket , bracket_vetoes in player .vetoes ._vetoes .items ()
77- for map_id , original_tokens in bracket_vetoes .items ()
78- )
79- player .vetoes ._vetoes = adjusted_vetoes
80- player .write_message ({
81- "command" : "vetoes_info" ,
82- "forced" : tokens_amount_for_some_map_was_reduced ,
83- ** player .vetoes .to_dict (),
84- })
85- if tokens_amount_for_some_map_was_reduced :
86- affected_players .append (player )
59+ if self .pools_veto_data == pools_vetodata :
60+ return []
61+
62+ self .pools_veto_data = pools_vetodata
63+
64+ pool_maps_by_bracket = {
65+ pool_data .matchmaker_queue_map_pool_id : set (pool_data .map_pool_map_version_ids )
66+ for pool_data in self .pools_veto_data
67+ }
8768
88- return affected_players
69+ affected_players = []
70+ for player in self .player_service .all_players :
71+ # TODO: Can we avoid force adjusting veto selections for players.
72+ adjusted_vetoes = self ._adjust_vetoes (player .vetoes ._vetoes )
73+
74+ if adjusted_vetoes != player .vetoes ._vetoes :
75+ tokens_amount_for_some_map_was_reduced = any (
76+ map_id in pool_maps_by_bracket .get (bracket , set ())
77+ and original_tokens > adjusted_vetoes .get (bracket , {}).get (map_id , 0 )
78+ for bracket , bracket_vetoes in player .vetoes ._vetoes .items ()
79+ for map_id , original_tokens in bracket_vetoes .items ()
80+ )
81+ player .vetoes ._vetoes = adjusted_vetoes
82+ player .write_message ({
83+ "command" : "vetoes_info" ,
84+ "forced" : tokens_amount_for_some_map_was_reduced ,
85+ ** player .vetoes .to_dict (),
86+ })
87+ if tokens_amount_for_some_map_was_reduced :
88+ affected_players .append (player )
8989
90- return []
90+ return affected_players
9191
9292 def extract_pools_veto_config (
9393 self ,
@@ -128,7 +128,7 @@ def extract_pools_veto_config(
128128 async def set_player_vetoes (
129129 self ,
130130 player : Player ,
131- new_vetoes : dict [BracketID , VetosMap ],
131+ new_vetoes : dict [BracketID , VetoesMap ],
132132 ):
133133 """Validates and sets vetoes based on new vetoes and pool constraints."""
134134 if not _is_valid_vetoes (new_vetoes ):
@@ -147,8 +147,8 @@ async def set_player_vetoes(
147147
148148 def _adjust_vetoes (
149149 self ,
150- new_vetoes : dict [BracketID , VetosMap ],
151- ) -> dict [BracketID , VetosMap ]:
150+ new_vetoes : dict [BracketID , VetoesMap ],
151+ ) -> dict [BracketID , VetoesMap ]:
152152 # TODO: How can we avoid doing this adjustment? It would be better to
153153 # simply check if the veto selection is valid, and return an error if
154154 # not so that the client can display that to the user and force a new
@@ -296,11 +296,11 @@ def _is_valid_vetoes(vetoes: Any) -> bool:
296296
297297
298298def _adjust_vetoes_for_bracket (
299- new_bracket_vetoes : VetosMap ,
299+ new_bracket_vetoes : VetoesMap ,
300300 map_ids : list [MapPoolMapVersionId ],
301301 total_tokens : int ,
302302 max_per_map : float ,
303- ) -> VetosMap :
303+ ) -> VetoesMap :
304304 assert total_tokens >= 0
305305
306306 adjusted_vetoes = {}
0 commit comments