#import "GameKitHelper.h" #import "GameConstants.h" @interface GameKitHelper () <GKGameCenterControllerDelegate> { BOOL _gameCenterFeaturesEnabled; } @end @implementation GameKitHelper #pragma mark Singleton stuff +(id) sharedGameKitHelper { static GameKitHelper *sharedGameKitHelper; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedGameKitHelper = [[GameKitHelper alloc] init]; }); return sharedGameKitHelper; } #pragma mark Player Authentication -(void) authenticateLocalPlayer { GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) { [self setLastError:error]; if ([CCDirector sharedDirector].isPaused) [[CCDirector sharedDirector] resume]; if (localPlayer.authenticated) { _gameCenterFeaturesEnabled = YES; } else if(viewController) { [[CCDirector sharedDirector] pause]; [self presentViewController:viewController]; } else { _gameCenterFeaturesEnabled = NO; } }; } @end
#pragma mark Property setters -(void) setLastError:(NSError*)error { _lastError = [error copy]; if (_lastError) { NSLog(@"GameKitHelper ERROR: %@", [[_lastError userInfo] description]); } } #pragma mark UIViewController stuff -(UIViewController*) getRootViewController { return [UIApplication sharedApplication].keyWindow.rootViewController; } -(void)presentViewController:(UIViewController*)vc { UIViewController* rootVC = [self getRootViewController]; [rootVC presentViewController:vc animated:YES completion:nil]; }