public Match(string seed, IEnumerable<string> accountIds, int lobby, MatchType matchType, LogOnService logOnService) { _lobby = lobby; _matchType = matchType; _logOnService = logOnService; _shuffler = new WallGenerator(seed); _firstOyaIndex = _shuffler.GetWall(0).First().Id % 4; var playerIndex = 0; foreach (var player in accountIds) { _players.Add(player, new PlayerStatus(playerIndex)); playerIndex += 1; } _stateMachine = new StateMachine(new PlayersConnectingState(this)); _stateMachine.Finished += OnFinished; }
public void Process(LocalConnection connection, XElement message) { StateMachine stateMachine; lock (_stateMachines) { if (!_stateMachines.ContainsKey(connection)) { var lobbyConnection = new LobbyConnection(connection, _matchServer, _logOnService); stateMachine = new StateMachine(new ConnectionEstablishedState(lobbyConnection)); stateMachine.Finished += OnConnectionEnded; _stateMachines.Add(connection, stateMachine); } else { stateMachine = _stateMachines[connection]; } } stateMachine.Process(new Message(InvariantConvert.ToString(connection.GetHashCode()), message)); }