public void GetAllMatches(Action <TurnBasedMatch[]> callback)
        {
            mTurnBasedManager.GetAllTurnbasedMatches(allMatches =>
            {
                int count = allMatches.MyTurnMatchesCount() +
                            allMatches.TheirTurnMatchesCount() +
                            allMatches.CompletedMatchesCount();

                TurnBasedMatch[] matches = new TurnBasedMatch[count];
                int i = 0;
                foreach (var match in allMatches.MyTurnMatches())
                {
                    matches[i++] = match.AsTurnBasedMatch(mNativeClient.GetUserId());
                }
                foreach (var match in allMatches.TheirTurnMatches())
                {
                    matches[i++] = match.AsTurnBasedMatch(mNativeClient.GetUserId());
                }
                foreach (var match in allMatches.CompletedMatches())
                {
                    matches[i++] = match.AsTurnBasedMatch(mNativeClient.GetUserId());
                }
                callback(matches);
            });
        }
Exemple #2
0
 private Action <TurnBasedManager.TurnBasedMatchResponse> BridgeMatchToUserCallback(
     Action <bool, TurnBasedMatch> userCallback)
 {
     return(callbackResult => {
         using (var match = callbackResult.Match()) {
             if (match == null)
             {
                 userCallback(false, null);
             }
             else
             {
                 var converted = match.AsTurnBasedMatch(mNativeClient.GetUserId());
                 Logger.d("Passing converted match to user callback:" + converted);
                 userCallback(true, converted);
             }
         }
     });
 }
 public void CreateQuickGame(uint minOpponents, uint maxOpponents, uint variant, ulong exclusiveBitMask, RealTimeMultiplayerListener listener)
 {
     lock (mSessionLock)
     {
         RoomSession newSession = new RoomSession(mRealtimeManager, listener);
         if (mCurrentSession.IsActive())
         {
             Logger.e("Received attempt to create a new room without cleaning up the old one.");
             newSession.LeaveRoom();
         }
         else
         {
             mCurrentSession = newSession;
             Logger.d("QuickGame: Setting MinPlayersToStart = " + minOpponents);
             mCurrentSession.MinPlayersToStart = minOpponents;
             using (RealtimeRoomConfigBuilder realtimeRoomConfigBuilder = RealtimeRoomConfigBuilder.Create())
             {
                 RealtimeRoomConfig config = realtimeRoomConfigBuilder.SetMinimumAutomatchingPlayers(minOpponents).SetMaximumAutomatchingPlayers(maxOpponents).SetVariant(variant)
                                             .SetExclusiveBitMask(exclusiveBitMask)
                                             .Build();
                 using (config)
                 {
                     GooglePlayGames.Native.PInvoke.RealTimeEventListenerHelper helper = HelperForSession(newSession);
                     try
                     {
                         newSession.StartRoomCreation(mNativeClient.GetUserId(), delegate
                         {
                             mRealtimeManager.CreateRoom(config, helper, newSession.HandleRoomResponse);
                         });
                     }
                     finally
                     {
                         if (helper != null)
                         {
                             ((IDisposable)helper).Dispose();
                         }
                     }
                 }
             }
         }
     }
 }
 public void GetAllMatches(Action <GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch[]> callback)
 {
     mTurnBasedManager.GetAllTurnbasedMatches(delegate(TurnBasedManager.TurnBasedMatchesResponse allMatches)
     {
         int num = allMatches.MyTurnMatchesCount() + allMatches.TheirTurnMatchesCount() + allMatches.CompletedMatchesCount();
         GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch[] array = new GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch[num];
         int num2 = 0;
         foreach (NativeTurnBasedMatch item in allMatches.MyTurnMatches())
         {
             array[num2++] = item.AsTurnBasedMatch(mNativeClient.GetUserId());
         }
         foreach (NativeTurnBasedMatch item2 in allMatches.TheirTurnMatches())
         {
             array[num2++] = item2.AsTurnBasedMatch(mNativeClient.GetUserId());
         }
         foreach (NativeTurnBasedMatch item3 in allMatches.CompletedMatches())
         {
             array[num2++] = item3.AsTurnBasedMatch(mNativeClient.GetUserId());
         }
         callback(array);
     });
 }