public void AcceptFromInbox(RealTimeMultiplayerListener listener) { lock (mSessionLock) { RoomSession newRoom = new RoomSession(mRealtimeManager, listener); if (mCurrentSession.IsActive()) { Logger.e("Received attempt to accept invitation without cleaning up active session."); newRoom.LeaveRoom(); } else { mCurrentSession = newRoom; mCurrentSession.ShowingUI = true; mRealtimeManager.ShowRoomInboxUI(delegate(RealtimeManager.RoomInboxUIResponse response) { mCurrentSession.ShowingUI = false; if (response.ResponseStatus() != CommonErrorStatus.UIStatus.VALID) { Logger.d("User did not complete invitation screen."); newRoom.LeaveRoom(); } else { GooglePlayGames.Native.PInvoke.MultiplayerInvitation invitation = response.Invitation(); GooglePlayGames.Native.PInvoke.RealTimeEventListenerHelper helper = HelperForSession(newRoom); try { Logger.d("About to accept invitation " + invitation.Id()); newRoom.StartRoomCreation(mNativeClient.GetUserId(), delegate { mRealtimeManager.AcceptInvitation(invitation, helper, delegate(RealtimeManager.RealTimeRoomResponse acceptResponse) { using (invitation) { newRoom.HandleRoomResponse(acceptResponse); newRoom.SetInvitation(invitation.AsInvitation()); } }); }); } finally { if (helper != null) { ((IDisposable)helper).Dispose(); } } } }); } } }
internal void HandleInvitation(Types.MultiplayerEvent eventType, string invitationId, GooglePlayGames.Native.PInvoke.MultiplayerInvitation invitation) { Action <Invitation, bool> invitationDelegate = this.mInvitationDelegate; if (invitationDelegate == null) { Logger.d("Received " + (object)eventType + " for invitation " + invitationId + " but no handler was registered."); } else if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVED for invitation " + invitationId); } else { bool flag = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; invitationDelegate(invitation.AsInvitation(), flag); } }
internal void HandleInvitation(Types.MultiplayerEvent eventType, string invitationId, GooglePlayGames.Native.PInvoke.MultiplayerInvitation invitation) { Action <Invitation, bool> currentHandler = mInvitationDelegate; if (currentHandler == null) { Logger.d("Received " + eventType + " for invitation " + invitationId + " but no handler was registered."); } else if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVED for invitation " + invitationId); } else { bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; Invitation invite = invitation.AsInvitation(); PlayGamesHelperObject.RunOnGameThread(delegate { currentHandler(invite, shouldAutolaunch); }); } }
internal void HandleInvitation(Types.MultiplayerEvent eventType, string invitationId, MultiplayerInvitation invitation) { // Stash a reference to the invitation handler in case it is updated while we're handling // this callback. var currentHandler = mInvitationDelegate; if (currentHandler == null) { Logger.d("Received " + eventType + " for invitation " + invitationId + " but no handler was registered."); return; } if (eventType == Types.MultiplayerEvent.REMOVED) { Logger.d("Ignoring REMOVED for invitation " + invitationId); return; } bool shouldAutolaunch = eventType == Types.MultiplayerEvent.UPDATED_FROM_APP_LAUNCH; currentHandler(invitation.AsInvitation(), shouldAutolaunch); }