protected virtual IEnumerator Connect()
        {
            if (Provider == Providers.Photon)
            {
                var matchmaker  = new PhotonMatchmaker(_client);
                var matchmaker2 = new PhotonMatchmaker(_client2);

                yield return(UpdateUntilSubscription(
                                 Observable.WhenAll(
                                     matchmaker.ConnectToCloudWithSettings(_settings),
                                     matchmaker2.ConnectToCloudWithSettings(_settings)
                                     )
                                 ));

                yield return(UpdateUntilSubscription(
                                 matchmaker.CreateGame(PhotonCreateGameOptions.FromRoomName(PlaymodeTestUtils.RoomName))
                                 ));

                var game1 = (IGame)LastResult;

                yield return(UpdateUntilSubscription(
                                 matchmaker2.FindGame(PhotonGameQuery.FromRoomName(PlaymodeTestUtils.RoomName))
                                 ));

                var game2 = (IGame)LastResult;

                yield return(UpdateUntilSubscription(
                                 Observable.WhenAll(
                                     game1.ConnectWithPhoton(),
                                     game2.ConnectWithPhoton()
                                     )
                                 ));

                var connections = (IConnection[])LastResult;
                _connection  = connections[0];
                _connection2 = connections[1];
            }
            else if (Provider == Providers.Mock)
            {
                _connection  = new MockConnection(true, MockConnection.MockNetwork.Default);
                _connection2 = new MockConnection(false, MockConnection.MockNetwork.Default);
            }
            else if (Provider == Providers.LiteNetLib)
            {
                _connection  = LiteNetLibConnectionExperimental.CreateServer(5000, 2, "0.1", false);
                _connection2 = LiteNetLibConnectionExperimental.CreateClient("localhost", 5000, 2, "0.1", false);
            }
        }
        protected virtual IEnumerator Connect(int num, bool create)
        {
            if (Provider == Providers.Photon)
            {
                if (num < 0 || num > 1)
                {
                    throw new ArgumentException("Invalid service number", nameof(num));
                }

                var matchmaker = new PhotonMatchmaker(num == 0 ? _client : _client2);

                yield return(UpdateUntilSubscription(
                                 matchmaker.ConnectToCloudWithSettings(_settings)
                                 ));

                if (create)
                {
                    yield return(UpdateUntilSubscription(
                                     matchmaker.CreateGame(PhotonCreateGameOptions.FromRoomName(PlaymodeTestUtils.RoomName))
                                     ));
                }
                else
                {
                    yield return(UpdateUntilSubscription(
                                     matchmaker.FindGame(PhotonGameQuery.FromRoomName(PlaymodeTestUtils.RoomName))
                                     ));
                }

                var game = (IGame)LastResult;

                yield return(UpdateUntilSubscription(game.ConnectWithPhoton()));

                var connection = (IConnection)LastResult;

                if (num == 0)
                {
                    _connection = connection;
                }
                else
                {
                    _connection2 = connection;
                }
            }
            else if (Provider == Providers.Mock)
            {
                if (num == 0)
                {
                    _connection = new MockConnection(true, MockConnection.MockNetwork.Default);
                }
                else
                {
                    _connection2 = new MockConnection(false, MockConnection.MockNetwork.Default);
                }
            }
            else if (Provider == Providers.LiteNetLib)
            {
                IConnection connection;
                if (create)
                {
                    connection = LiteNetLibConnectionExperimental.CreateServer(5000, 2, "0.1", false);
                }
                else
                {
                    connection = LiteNetLibConnectionExperimental.CreateClient("localhost", 5000, 2, "0.1", false);
                }

                if (num == 0)
                {
                    _connection = connection;
                }
                else
                {
                    _connection2 = connection;
                }
            }
        }