private void InitializeGameServices() { lock (GameServicesLock) { if (mServices != null) { return; } using (var builder = GameServicesBuilder.Create()) { using (var config = CreatePlatformConfiguration(builder)) { // We need to make sure that the invitation delegate is registered before the // services object is initialized - otherwise we might miss a callback if // the game was opened because of a user accepting an invitation through // a system notification. RegisterInvitationDelegate(mConfiguration.InvitationDelegate); builder.SetOnAuthFinishedCallback(HandleAuthTransition); builder.SetOnTurnBasedMatchEventCallback((eventType, matchId, match) => mTurnBasedClient.HandleMatchEvent(eventType, matchId, match)); builder.SetOnMultiplayerInvitationEventCallback(HandleInvitation); if (mConfiguration.EnableSavedGames) { builder.EnableSnapshots(); } mServices = builder.Build(config); mTurnBasedClient = new NativeTurnBasedMultiplayerClient(this, new TurnBasedManager(mServices)); mTurnBasedClient.RegisterMatchDelegate(mConfiguration.MatchDelegate); mRealTimeClient = new NativeRealtimeMultiplayerClient(this, new RealtimeManager(mServices)); if (mConfiguration.EnableSavedGames) { mSavedGameClient = new NativeSavedGameClient(new SnapshotManager(mServices)); } else { mSavedGameClient = new UnsupportedSavedGamesClient( "You must enable saved games before it can be used. " + "See PlayGamesClientConfiguration.Builder.EnableSavedGames."); } mAppStateClient = CreateAppStateClient(); mAuthState = AuthState.SilentPending; } } } }
private void InitializeGameServices() { lock (GameServicesLock) { if (mServices != null) { return; } using (var builder = GameServicesBuilder.Create()) { using (var config = CreatePlatformConfiguration(builder)) { builder.SetOnAuthFinishedCallback(HandleAuthTransition); builder.SetOnTurnBasedMatchEventCallback((eventType, matchId, match) => mTurnBasedClient.HandleMatchEvent(eventType, matchId, match)); builder.SetOnMultiplayerInvitationEventCallback(HandleInvitation); mServices = builder.Build(config); mTurnBasedClient = new NativeTurnBasedMultiplayerClient(this, new TurnBasedManager(mServices)); mRealTimeClient = new NativeRealtimeMultiplayerClient(this, new RealtimeManager(mServices)); mAppStateClient = CreateAppStateClient(); mAuthState = AuthState.SilentPending; } } } }