Exemplo n.º 1
0
        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);
                }
            });
        }