Beispiel #1
0
 public static TronLobby ToTronLobby(this MatchmakingLobby matchmakingLobby)
 {
     return(new TronLobby
     {
         Board = matchmakingLobby.Board,
         IsReady = matchmakingLobby.IsReady,
         Players = new List <TronPlayer>(matchmakingLobby.Players)
     });
 }
Beispiel #2
0
        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);
        }