예제 #1
0
            public void onResult(AndroidJavaObject result)
            {
                Logger.d("ResultProxy got result for method: " + mMethod);
                int            statusCode = JavaUtil.GetStatusCode(result);
                bool           isSuccess  = mSuccessCodes.Contains(statusCode);
                TurnBasedMatch match      = null;

                if (isSuccess)
                {
                    Logger.d("SUCCESS result from method " + mMethod + ": " + statusCode);
                    if (mMatchCallback != null)
                    {
                        Logger.d("Attempting to get match from result of " + mMethod);
                        AndroidJavaObject matchObj = JavaUtil.CallNullSafeObjectMethod(result, "getMatch");
                        if (matchObj != null)
                        {
                            Logger.d("Successfully got match from result of " + mMethod);
                            match = JavaUtil.ConvertMatch(mOwner.mClient.PlayerId, matchObj);
                            matchObj.Dispose();
                        }
                        else
                        {
                            Logger.w("Got a NULL match from result of " + mMethod);
                        }
                    }
                }
                else
                {
                    Logger.w("ERROR result from " + mMethod + ": " + statusCode);
                }

                if (mSuccessCallback != null)
                {
                    Logger.d("Invoking success callback (success=" + isSuccess + ") for " +
                             "result of method " + mMethod);
                    PlayGamesHelperObject.RunOnGameThread(() => {
                        mSuccessCallback.Invoke(isSuccess);
                    });
                }
                if (mMatchCallback != null)
                {
                    Logger.d("Invoking match callback for result of method " + mMethod + ": " +
                             "(success=" + isSuccess + ", match=" +
                             (match == null ? "(null)" : match.ToString()));
                    PlayGamesHelperObject.RunOnGameThread(() => {
                        mMatchCallback.Invoke(isSuccess, match);
                    });
                }
            }
예제 #2
0
        private void OnInvitationInboxTurnBasedMatch(AndroidJavaObject matchObj, Action <bool, TurnBasedMatch> callback)
        {
            Logger.d("AndroidTbmpClient.OnInvitationTurnBasedMatch");
            Logger.d("Converting received match to our format...");
            TurnBasedMatch match = JavaUtil.ConvertMatch(this.mClient.PlayerId, matchObj);

            Logger.d("Resulting match: " + match);
            if (callback != null)
            {
                Logger.d("Invoking match callback w/ success.");
                PlayGamesHelperObject.RunOnGameThread(delegate
                {
                    callback(true, match);
                });
            }
        }
예제 #3
0
        private void CheckForConnectionExtras()
        {
            // check to see if we have a pending invitation in our gamehelper
            Logger.d("AndroidClient: CheckInvitationFromNotification.");
            Logger.d("AndroidClient: looking for invitation in our GameHelper.");
            Invitation        invFromNotif = null;
            AndroidJavaObject invObj       = mGHManager.GetInvitation();
            AndroidJavaObject matchObj     = mGHManager.GetTurnBasedMatch();

            mGHManager.ClearInvitationAndTurnBasedMatch();

            if (invObj != null)
            {
                Logger.d("Found invitation in GameHelper. Converting.");
                invFromNotif = ConvertInvitation(invObj);
                Logger.d("Found invitation in our GameHelper: " + invFromNotif);
            }
            else
            {
                Logger.d("No invitation in our GameHelper. Trying SignInHelperManager.");
                AndroidJavaClass cls = JavaUtil.GetClass(JavaConsts.SignInHelperManagerClass);
                using (AndroidJavaObject inst = cls.CallStatic <AndroidJavaObject>("getInstance")) {
                    if (inst.Call <bool>("hasInvitation"))
                    {
                        invFromNotif = ConvertInvitation(inst.Call <AndroidJavaObject>("getInvitation"));
                        Logger.d("Found invitation in SignInHelperManager: " + invFromNotif);
                        inst.Call("forgetInvitation");
                    }
                    else
                    {
                        Logger.d("No invitation in SignInHelperManager either.");
                    }
                }
            }

            TurnBasedMatch match = null;

            if (matchObj != null)
            {
                Logger.d("Found match in GameHelper. Converting.");
                match = JavaUtil.ConvertMatch(mUserId, matchObj);
                Logger.d("Match from GameHelper: " + match);
            }
            else
            {
                Logger.d("No match in our GameHelper. Trying SignInHelperManager.");
                AndroidJavaClass cls = JavaUtil.GetClass(JavaConsts.SignInHelperManagerClass);
                using (AndroidJavaObject inst = cls.CallStatic <AndroidJavaObject>("getInstance")) {
                    if (inst.Call <bool>("hasTurnBasedMatch"))
                    {
                        match = JavaUtil.ConvertMatch(mUserId,
                                                      inst.Call <AndroidJavaObject>("getTurnBasedMatch"));
                        Logger.d("Found match in SignInHelperManager: " + match);
                        inst.Call("forgetTurnBasedMatch");
                    }
                    else
                    {
                        Logger.d("No match in SignInHelperManager either.");
                    }
                }
            }

            // if we got an invitation from the notification, invoke the delegate
            if (invFromNotif != null)
            {
                if (mInvitationDelegate != null)
                {
                    Logger.d("Invoking invitation received delegate to deal with invitation " +
                             " from notification.");
                    PlayGamesHelperObject.RunOnGameThread(() => {
                        if (mInvitationDelegate != null)
                        {
                            mInvitationDelegate.Invoke(invFromNotif, true);
                        }
                    });
                }
                else
                {
                    Logger.d("No delegate to handle invitation from notification; queueing.");
                    mInvitationFromNotification = invFromNotif;
                }
            }

            // if we got a turn-based match, hand it over to the TBMP client who will know
            // better what to do with it
            if (match != null)
            {
                mTbmpClient.HandleMatchFromNotification(match);
            }
        }
예제 #4
0
        private void CheckForConnectionExtras()
        {
            Logger.d("AndroidClient: CheckInvitationFromNotification.");
            Logger.d("AndroidClient: looking for invitation in our GameHelper.");
            Invitation        invFromNotif   = null;
            AndroidJavaObject invitation     = this.mGHManager.GetInvitation();
            AndroidJavaObject turnBasedMatch = this.mGHManager.GetTurnBasedMatch();

            this.mGHManager.ClearInvitationAndTurnBasedMatch();
            if (invitation != null)
            {
                Logger.d("Found invitation in GameHelper. Converting.");
                invFromNotif = this.ConvertInvitation(invitation);
                Logger.d("Found invitation in our GameHelper: " + invFromNotif);
            }
            else
            {
                Logger.d("No invitation in our GameHelper. Trying SignInHelperManager.");
                AndroidJavaClass @class = JavaUtil.GetClass("com.google.example.games.pluginsupport.SignInHelperManager");
                using (AndroidJavaObject androidJavaObject = @class.CallStatic <AndroidJavaObject>("getInstance", new object[0]))
                {
                    if (androidJavaObject.Call <bool>("hasInvitation", new object[0]))
                    {
                        invFromNotif = this.ConvertInvitation(androidJavaObject.Call <AndroidJavaObject>("getInvitation", new object[0]));
                        Logger.d("Found invitation in SignInHelperManager: " + invFromNotif);
                        androidJavaObject.Call("forgetInvitation", new object[0]);
                    }
                    else
                    {
                        Logger.d("No invitation in SignInHelperManager either.");
                    }
                }
            }
            TurnBasedMatch turnBasedMatch2 = null;

            if (turnBasedMatch != null)
            {
                Logger.d("Found match in GameHelper. Converting.");
                turnBasedMatch2 = JavaUtil.ConvertMatch(this.mUserId, turnBasedMatch);
                Logger.d("Match from GameHelper: " + turnBasedMatch2);
            }
            else
            {
                Logger.d("No match in our GameHelper. Trying SignInHelperManager.");
                AndroidJavaClass class2 = JavaUtil.GetClass("com.google.example.games.pluginsupport.SignInHelperManager");
                using (AndroidJavaObject androidJavaObject2 = class2.CallStatic <AndroidJavaObject>("getInstance", new object[0]))
                {
                    if (androidJavaObject2.Call <bool>("hasTurnBasedMatch", new object[0]))
                    {
                        turnBasedMatch2 = JavaUtil.ConvertMatch(this.mUserId, androidJavaObject2.Call <AndroidJavaObject>("getTurnBasedMatch", new object[0]));
                        Logger.d("Found match in SignInHelperManager: " + turnBasedMatch2);
                        androidJavaObject2.Call("forgetTurnBasedMatch", new object[0]);
                    }
                    else
                    {
                        Logger.d("No match in SignInHelperManager either.");
                    }
                }
            }
            if (invFromNotif != null)
            {
                if (this.mInvitationDelegate != null)
                {
                    Logger.d("Invoking invitation received delegate to deal with invitation  from notification.");
                    PlayGamesHelperObject.RunOnGameThread(delegate
                    {
                        if (this.mInvitationDelegate != null)
                        {
                            this.mInvitationDelegate(invFromNotif, true);
                        }
                    });
                }
                else
                {
                    Logger.d("No delegate to handle invitation from notification; queueing.");
                    this.mInvitationFromNotification = invFromNotif;
                }
            }
            if (turnBasedMatch2 != null)
            {
                this.mTbmpClient.HandleMatchFromNotification(turnBasedMatch2);
            }
        }
예제 #5
0
            public void onResult(AndroidJavaObject result)
            {
                Logger.d("ResultProxy got result for method: " + this.mMethod);
                int            statusCode = JavaUtil.GetStatusCode(result);
                bool           isSuccess  = this.mSuccessCodes.Contains(statusCode);
                TurnBasedMatch match      = null;

                if (isSuccess)
                {
                    Logger.d(string.Concat(new object[]
                    {
                        "SUCCESS result from method ",
                        this.mMethod,
                        ": ",
                        statusCode
                    }));
                    if (this.mMatchCallback != null)
                    {
                        Logger.d("Attempting to get match from result of " + this.mMethod);
                        AndroidJavaObject androidJavaObject = JavaUtil.CallNullSafeObjectMethod(result, "getMatch", new object[0]);
                        if (androidJavaObject != null)
                        {
                            Logger.d("Successfully got match from result of " + this.mMethod);
                            match = JavaUtil.ConvertMatch(this.mOwner.mClient.PlayerId, androidJavaObject);
                            androidJavaObject.Dispose();
                        }
                        else
                        {
                            Logger.w("Got a NULL match from result of " + this.mMethod);
                        }
                    }
                }
                else
                {
                    Logger.w(string.Concat(new object[]
                    {
                        "ERROR result from ",
                        this.mMethod,
                        ": ",
                        statusCode
                    }));
                }
                if (this.mSuccessCallback != null)
                {
                    Logger.d(string.Concat(new object[]
                    {
                        "Invoking success callback (success=",
                        isSuccess,
                        ") for result of method ",
                        this.mMethod
                    }));
                    PlayGamesHelperObject.RunOnGameThread(delegate
                    {
                        this.mSuccessCallback(isSuccess);
                    });
                }
                if (this.mMatchCallback != null)
                {
                    Logger.d(string.Concat(new object[]
                    {
                        "Invoking match callback for result of method ",
                        this.mMethod,
                        ": (success=",
                        isSuccess,
                        ", match=",
                        (match != null) ? match.ToString() : "(null)"
                    }));
                    PlayGamesHelperObject.RunOnGameThread(delegate
                    {
                        this.mMatchCallback(isSuccess, match);
                    });
                }
            }