diff --git a/lib/parser.py b/lib/parser.py index 8e58dfd..f80654f 100644 --- a/lib/parser.py +++ b/lib/parser.py @@ -65,8 +65,8 @@ class EventParser: 'MATCH_STARTED': self._handle_match_started, 'MATCH_REPORT': self._handle_match_report, 'PLAYER_STATS': self._handle_player_stats, - 'PLAYER_CONNECT': lambda d: None, - 'PLAYER_DISCONNECT': lambda d: None, + 'PLAYER_CONNECT': self._handle_player_connect, + 'PLAYER_DISCONNECT': self._handle_player_disconnect, 'ROUND_OVER': self._handle_round_over, } @@ -92,6 +92,28 @@ class EventParser: logger.debug(f'Error parsing event: {e}') return None + def _handle_player_connect(self, data): + """Track a connecting player so the roster is complete; connects to the + server land as spectators until they join a team. No feed line: the + RCON connect broadcast already displays one.""" + name = data.get('NAME') + if not name: + return None + team = data.get('TEAM') + if team is None: + team = 'SPECTATOR' + self.game_state.player_tracker.update_team(name, team) + self.game_state.player_tracker.add_player(name) + return None + + def _handle_player_disconnect(self, data): + """Remove a disconnecting player from the roster. No feed line: the + RCON disconnect broadcast already displays one.""" + name = data.get('NAME') + if name: + self.game_state.player_tracker.remove_player(name) + return None + def _handle_switchteam(self, data): """Handle PLAYER_SWITCHTEAM event"""