public void Finish(TurnBasedMatch match, byte[] data, MatchOutcome outcome, Action <bool> callback) { Util.NullArgumentTest(match); Util.NullArgumentTest(data); Util.NullArgumentTest(outcome); // Grab the GKTurnBasedMatch. var gkMatch = match.GC_TurnBasedMatch; // Set outcome for all participants. var participants = gkMatch.Participants.ToArray( ptr => InteropObjectFactory <GKTurnBasedParticipant> .FromPointer(ptr, p => new GKTurnBasedParticipant(p))); foreach (var p in participants) { var gkPlayer = p.Player; if (gkPlayer != null) { p.MatchOutcome = outcome.ToGKTurnBasedMatchOutcome(gkPlayer.PlayerID); } else { p.MatchOutcome = new GKTBMOutcome() { outcome = GKTBMOutcome.Outcome.Quit } }; // disconnected player should have outcome as Quit. } // End match in turn. gkMatch.EndMatchInTurn( data, error => { if (error != null) { Debug.Log("Failed to finish match with error " + error.LocalizedDescription); } if (callback != null) { callback(error == null); } }); }