Adding a link to Game Center From Cocos2dx

I've just been revising how I implement Game Center, which I've ignored for a while.  Here's an easy way of linking to a leaderboard from Cocos2dx.  It just uses the RootViewController to do all the work rather than adding an extra class as it's only a little bit of code.


Change the interface to make it a leaderboard delegate:

@interface RootViewController : UIViewController <GKGameCenterControllerDelegate>


Add these:
@interface RootViewController : UIViewController

- (void) showLeaderBoard {
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
    if (gameCenterController != NULL)
        gameCenterController.gameCenterDelegate = self;
        gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
        [self presentViewController: gameCenterController animated: YES completion:nil];


    [gameCenterController release];


- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)leaderboardController
    [self dismissViewControllerAnimated:YES completion:nil];


Then, to call it, you just include

    if ([GKLocalPlayer localPlayer].authenticated == YES) {
        UIViewController* rootVC =  [UIApplication sharedApplication].keyWindow.rootViewController;
        [rootVC showLeaderBoard];

Don't forget to:

#import <GameKit/GameKit.h>

as well.

No comments:

Post a Comment