private void OnMatchmakingFoundMatchup(object sender, Matchmaking.MatchCreatedArgs matchCreatedArgs) { lock (_runningGames) { _gameIdentifier++; var game = new ServerGame(this, _supervisorFactory.Create(matchCreatedArgs.GameMode), matchCreatedArgs.Users, _settingsFactory.Create(matchCreatedArgs.GameMode), _gameIdentifier, _logger); foreach (var serverUser in matchCreatedArgs.Users) { matchCreatedArgs.Source.LeaveQueue(serverUser); game.HandleReconnect(serverUser); } _runningGames.TryAdd(_gameIdentifier, game); } }
void IServer.HandleGameEnded(ServerGame serverGame) { ServerGame game; _runningGames.TryRemove(serverGame.GameIdentifier, out game); }