game-centerquitgkturnbasedmatch

How to end a 2 player turn based Game Center match when player quit out of trun


I have searched about everywhere and not found an anwer for this problem:

I have a 2 player game, turn based, via Game Center.

After a player has done his move, he has the ability in Game Center to quit the game. In my case, this automatically means the game has ended and the other player has won. However, I can not find a Game Centermethod to make this happen.

I can not use endMatchInTurnWithMatchData because it is not this players turn.

And if I try to use endMatchInTurnWithMatchData when it is the other player's turn, this isn't possible either, because there is no other player to send the endMatchInTurnWithMatchData to (because the other player already quit).

Is there anyone who knows the solution to this?

Thanks, Martyn


Solution

  • You have to implement turnBasedMatchmakerViewController:playerQuitForMatch: method of GKTurnBasedMatchmakerViewControllerDelegate. Here is an example code:

    -(void)turnBasedMatchmakerViewController: (GKTurnBasedMatchmakerViewController *)viewController playerQuitForMatch:(GKTurnBasedMatch *)match {
        NSUInteger currentIndex = [match.participants indexOfObject:match.currentParticipant];
        GKTurnBasedParticipant *next = [match.participants objectAtIndex:(currentIndex + 1)%[match.participants count]];
        [match participantQuitInTurnWithOutcome:GKTurnBasedMatchOutcomeQuit nextParticipants:@[next] turnTimeout:MAXFLOAT matchData:match.matchData completionHandler:nil];
        [next setMatchOutcome:GKTurnBasedMatchOutcomeWon];
        [match endMatchInTurnWithMatchData:match.matchData completionHandler:nil];
    }