public static TronLobby ToTronLobby(this MatchmakingLobby matchmakingLobby) { return(new TronLobby { Board = matchmakingLobby.Board, IsReady = matchmakingLobby.IsReady, Players = new List <TronPlayer>(matchmakingLobby.Players) }); }
public TronLobby JoinLobby(JoinLobbyRequest request) { TronLobby tronLobby; lock (GameLobbiesLock) { var index = GameLobbies.FindIndex(lobby => lobby.Board.Cols == request.PlayerBoard.Cols && lobby.Board.Rows == request.PlayerBoard.Rows && lobby.Players.All(p => p.Key != request.Player.Key)); if (index > -1) { var lobby = GameLobbies[index]; lobby.Players.Add(request.Player); lobby.IsReady = lobby.Players.Count == 2; if (lobby.IsReady) { GameLobbies.RemoveAt(index); } tronLobby = lobby.ToTronLobby(); } else { var lobby = new MatchmakingLobby { Players = new List <TronPlayer> { request.Player }, Board = request.PlayerBoard }; GameLobbies.Add(lobby); tronLobby = lobby.ToTronLobby(); } } return(tronLobby); }