Как завершить пошаговый матч Game Center для двух игроков, когда игрок вышел из trun

Я искал повсюду и не нашел ответа на эту проблему:

У меня есть игра для 2 игроков, пошаговая, через Game Center.

После того, как игрок сделал свой ход, он может выйти из игры в Game Center. В моем случае это автоматически означает, что игра закончилась, и другой игрок выиграл. Однако я не могу найти метод Game Center, чтобы это произошло.

Я не могу использовать endMatchInTurnWithMatchData, потому что это не тот ход игроков.

И если я попытаюсь использовать endMatchInTurnWithMatchData, когда настала очередь другого игрока, это также невозможно, потому что нет другого игрока, которому можно отправить endMatchInTurnWithMatchData (поскольку другой игрок уже вышел).

Есть ли кто-нибудь, кто знает решение этого?

Спасибо, Мартин


person user2515937    schedule 24.06.2013    source источник


Ответы (2)


Вы должны реализовать turnBasedMatchmakerViewController:playerQuitForMatch: метод GKTurnBasedMatchmakerViewControllerDelegate. Вот пример кода:

-(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];
}
person Adam    schedule 05.07.2013
comment
Да, но это работает только в том случае, если игрок, который выходит, также является игроком, чей ход. - person user2515937; 05.07.2013
comment
Что делать, если игрок выходит ВНЕ очереди? - person user2515937; 05.07.2013
comment
Сработало ли это решение и для выхода вне очереди? Можете ли вы поделиться своим решением? - person Fredrik Johansson; 28.02.2015

Я боролся с той же проблемой. Что в итоге сработало для меня, так это установить себя в качестве следующего участника при вызове участникаQuitInTurnWithOutcome.

Надеюсь, поможет!

person davvilla    schedule 24.06.2014