private void CheckAndPlayMatch(TurnBasedMatch match, bool playerWantsToQuit)
        {
            if (match.Data != null && match.Data.Length > 0 && MatchData.FromByteArray(match.Data) == null)
            {
                NativeUI.Alert("Error", "The arrived match can't be opened in this scene. You might want to open it in the TicTacToe demo instead.");
                return;
            }

            CurrentMatch     = match;
            CurrentOpponents = CurrentMatch.Participants.Where(p => p.ParticipantId != CurrentMatch.SelfParticipantId).ToArray();
            RefreshParticipantsDropDown();
            canTakeTurn = true;

            if (CurrentMatch.Data == null || CurrentMatch.Data.Length < 1) /// New game detected...
            {
                CurrentMatchData = new MatchData()
                {
                    TurnCount = 0
                }
            }
            ;
            else
            {
                CurrentMatchData = MatchData.FromByteArray(CurrentMatch.Data);
            }

            if (CurrentMatch.Status == TurnBasedMatch.MatchStatus.Ended)
            {
                canTakeTurn = false;
                var result = string.Format("Winner: {0}\nTurnCount: {1}\n\n", CurrentMatchData.WinnerName ?? "null", CurrentMatchData.TurnCount);
                NativeUI.Alert("Finished Match Arrived", result + MatchFinishedMessage + "\n\nMatch info:\n" + GetTurnbasedMatchDisplayString(CurrentMatch));
                return;
            }
            else if (CurrentMatch.Status == TurnBasedMatch.MatchStatus.Cancelled)
            {
                NativeUI.Alert("Cancelled Match Arrived", CancelledMatchMessage);
                return;
            }
            else if (CurrentMatch.Status == TurnBasedMatch.MatchStatus.Deleted)
            {
                NativeUI.Alert("Deleted Match Arrived", DeletedMatchMessage);
                return;
            }
            else if (CurrentMatch.Status == TurnBasedMatch.MatchStatus.Expired)
            {
                NativeUI.Alert("Expired Match Arrived", ExpiredMatchMessage);
                return;
            }

            if (AllOpponensLeft)
            {
                NativeUI.Alert("Game Over", AllOpponentsLeftMessage);
                return;
            }

            CurrentMatchData.TurnCount++;
            NativeUI.Alert("Match Arrived", "New match data has been arrived:\n" + GetTurnbasedMatchDisplayString(match));
        }