예제 #1
0
        internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId,
                                       NativeTurnBasedMatch match)
        {
            // Capture the current value of the delegate to protect against racing updates.
            var currentDelegate = mMatchDelegate;

            if (currentDelegate == null)
            {
                return;
            }

            // Ignore REMOVED events - this plugin has no use for them.
            if (eventType == Types.MultiplayerEvent.REMOVED)
            {
                Logger.d("Ignoring REMOVE event for match " + matchId);
                return;
            }

            bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH;

            match.ReferToMe();
            Callbacks.AsCoroutine(WaitForLogin(() =>
                                               { currentDelegate(match.AsTurnBasedMatch(mNativeClient.GetUserId()), shouldAutolaunch);
                                                 match.ForgetMe(); }));
        }
        private Action <TurnBasedManager.TurnBasedMatchResponse> BridgeMatchToUserCallback(Action <UIStatus, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> userCallback)
        {
            return(delegate(TurnBasedManager.TurnBasedMatchResponse callbackResult)
            {
                using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match())
                {
                    if (nativeTurnBasedMatch == null)
                    {
                        UIStatus arg = UIStatus.InternalError;
                        switch (callbackResult.ResponseStatus())
                        {
                        case CommonErrorStatus.MultiplayerStatus.VALID:
                            arg = UIStatus.Valid;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE:
                            arg = UIStatus.Valid;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.ERROR_INTERNAL:
                            arg = UIStatus.InternalError;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.ERROR_NOT_AUTHORIZED:
                            arg = UIStatus.NotAuthorized;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.ERROR_VERSION_UPDATE_REQUIRED:
                            arg = UIStatus.VersionUpdateRequired;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.ERROR_TIMEOUT:
                            arg = UIStatus.Timeout;
                            break;
                        }
                        userCallback(arg, null);
                    }
                    else
                    {
                        GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(mNativeClient.GetUserId());
                        Logger.d("Passing converted match to user callback:" + turnBasedMatch);
                        userCallback(UIStatus.Valid, turnBasedMatch);
                    }
                }
            });
        }
        private Action <TurnBasedManager.TurnBasedMatchResponse> BridgeMatchToUserCallback(Action <GooglePlayGames.BasicApi.UIStatus, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> userCallback)
        {
            return((Action <TurnBasedManager.TurnBasedMatchResponse>)(callbackResult =>
            {
                using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match())
                {
                    if (nativeTurnBasedMatch == null)
                    {
                        GooglePlayGames.BasicApi.UIStatus uiStatus = GooglePlayGames.BasicApi.UIStatus.InternalError;
                        switch (callbackResult.ResponseStatus() + 5)
                        {
                        case ~(CommonErrorStatus.MultiplayerStatus.ERROR_INTERNAL | CommonErrorStatus.MultiplayerStatus.VALID):
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.Timeout;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.VALID:
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.VersionUpdateRequired;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE:
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.NotAuthorized;
                            break;

                        case CommonErrorStatus.MultiplayerStatus.VALID | CommonErrorStatus.MultiplayerStatus.VALID_BUT_STALE:
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.InternalError;
                            break;

                        case ~CommonErrorStatus.MultiplayerStatus.ERROR_MATCH_ALREADY_REMATCHED:
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.Valid;
                            break;

                        case ~CommonErrorStatus.MultiplayerStatus.ERROR_INACTIVE_MATCH:
                            uiStatus = GooglePlayGames.BasicApi.UIStatus.Valid;
                            break;
                        }
                        userCallback(uiStatus, (GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch)null);
                    }
                    else
                    {
                        GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(this.mNativeClient.GetUserId());
                        Logger.d("Passing converted match to user callback:" + (object)turnBasedMatch);
                        userCallback(GooglePlayGames.BasicApi.UIStatus.Valid, turnBasedMatch);
                    }
                }
            }));
        }
 public void AcceptFromInbox(Action <bool, GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch> callback)
 {
     callback = Callbacks.AsOnGameThreadCallback(callback);
     mTurnBasedManager.ShowInboxUI(delegate(TurnBasedManager.MatchInboxUIResponse callbackResult)
     {
         using (NativeTurnBasedMatch nativeTurnBasedMatch = callbackResult.Match())
         {
             if (nativeTurnBasedMatch == null)
             {
                 callback(false, null);
             }
             else
             {
                 GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch turnBasedMatch = nativeTurnBasedMatch.AsTurnBasedMatch(mNativeClient.GetUserId());
                 Logger.d("Passing converted match to user callback:" + turnBasedMatch);
                 callback(true, turnBasedMatch);
             }
         }
     });
 }
 private void FindEqualVersionMatch(GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch match, Action <bool> onFailure, Action <NativeTurnBasedMatch> onVersionMatch)
 {
     mTurnBasedManager.GetMatch(match.MatchId, delegate(TurnBasedManager.TurnBasedMatchResponse response)
     {
         using (NativeTurnBasedMatch nativeTurnBasedMatch = response.Match())
         {
             if (nativeTurnBasedMatch == null)
             {
                 Logger.e($"Could not find match {match.MatchId}");
                 onFailure(false);
             }
             else if (nativeTurnBasedMatch.Version() != match.Version)
             {
                 Logger.e($"Attempted to update a stale version of the match. Expected version was {match.Version} but current version is {nativeTurnBasedMatch.Version()}.");
                 onFailure(false);
             }
             else
             {
                 onVersionMatch(nativeTurnBasedMatch);
             }
         }
     });
 }
 private void FindEqualVersionMatch(GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch match, Action <bool> onFailure, Action <NativeTurnBasedMatch> onVersionMatch)
 {
     this.mTurnBasedManager.GetMatch(match.MatchId, (Action <TurnBasedManager.TurnBasedMatchResponse>)(response =>
     {
         using (NativeTurnBasedMatch nativeTurnBasedMatch = response.Match())
         {
             if (nativeTurnBasedMatch == null)
             {
                 Logger.e(string.Format("Could not find match {0}", (object)match.MatchId));
                 onFailure(false);
             }
             else if ((int)nativeTurnBasedMatch.Version() != (int)match.Version)
             {
                 Logger.e(string.Format("Attempted to update a stale version of the match. Expected version was {0} but current version is {1}.", (object)match.Version, (object)nativeTurnBasedMatch.Version()));
                 onFailure(false);
             }
             else
             {
                 onVersionMatch(nativeTurnBasedMatch);
             }
         }
     }));
 }
        internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId, NativeTurnBasedMatch match)
        {
            Action <GooglePlayGames.BasicApi.Multiplayer.TurnBasedMatch, bool> currentDelegate = mMatchDelegate;

            if (currentDelegate != null)
            {
                if (eventType == Types.MultiplayerEvent.REMOVED)
                {
                    Logger.d("Ignoring REMOVE event for match " + matchId);
                }
                else
                {
                    bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH;
                    match.ReferToMe();
                    Callbacks.AsCoroutine(WaitForLogin(delegate
                    {
                        currentDelegate(match.AsTurnBasedMatch(mNativeClient.GetUserId()), shouldAutolaunch);
                        match.ForgetMe();
                    }));
                }
            }
        }
 internal void HandleMatchEvent(Types.MultiplayerEvent eventType, string matchId, NativeTurnBasedMatch match)
 {
     // ISSUE: object of a compiler-generated type is created
     // ISSUE: variable of a compiler-generated type
     NativeTurnBasedMultiplayerClient.\u003CHandleMatchEvent\u003Ec__AnonStorey154 eventCAnonStorey154 = new NativeTurnBasedMultiplayerClient.\u003CHandleMatchEvent\u003Ec__AnonStorey154();
     // ISSUE: reference to a compiler-generated field
     eventCAnonStorey154.match = match;
     // ISSUE: reference to a compiler-generated field
     eventCAnonStorey154.\u003C\u003Ef__this = this;
     // ISSUE: reference to a compiler-generated field
     eventCAnonStorey154.currentDelegate = this.mMatchDelegate;
     // ISSUE: reference to a compiler-generated field
     if (eventCAnonStorey154.currentDelegate == null)
     {
         return;
     }
     if (eventType == Types.MultiplayerEvent.REMOVED)
     {
         Logger.d("Ignoring REMOVE event for match " + matchId);
     }
     else
     {
         // ISSUE: reference to a compiler-generated field
         eventCAnonStorey154.shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH;
         // ISSUE: reference to a compiler-generated field
         eventCAnonStorey154.match.ReferToMe();
         // ISSUE: reference to a compiler-generated method
         Callbacks.AsCoroutine(this.WaitForLogin(new Action(eventCAnonStorey154.\u003C\u003Em__7E)));
     }
 }