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)); }