private IEnumerator LoadCards(UnityCardGame cardGame)
        {
            if (cardGame == null)
            {
                cardGame = Current;
            }

            for (int page = cardGame.AllCardsUrlPageCountStartIndex;
                 page < cardGame.AllCardsUrlPageCountStartIndex + cardGame.AllCardsUrlPageCount;
                 page++)
            {
                cardGame.LoadCards(page);
                if (page == cardGame.AllCardsUrlPageCountStartIndex &&
                    cardGame.AllCardsUrlPageCount > CardsLoadingMessageThreshold)
                {
                    Messenger.Show(string.Format(CardsLoadingMessage, cardGame.Name));
                }
                yield return(null);
            }

            if (!string.IsNullOrEmpty(cardGame.Error))
            {
                Debug.LogError(LoadErrorMessage + cardGame.Error);
            }
            else if (cardGame.AllCardsUrlPageCount > CardsLoadingMessageThreshold)
            {
                Messenger.Show(string.Format(CardsLoadedMessage, cardGame.Name));
            }
        }
        private IEnumerator LoadSetCards(UnityCardGame cardGame)
        {
            if (cardGame == null)
            {
                cardGame = Current;
            }

            var setCardsLoaded = false;

            foreach (Set set in cardGame.Sets.Values)
            {
                if (string.IsNullOrEmpty(set.CardsUrl))
                {
                    continue;
                }
                if (!setCardsLoaded)
                {
                    Messenger.Show(string.Format(SetCardsLoadingMessage, cardGame.Name));
                }
                setCardsLoaded = true;
                string setCardsFilePath = Path.Combine(cardGame.SetsDirectoryPath,
                                                       UnityExtensionMethods.GetSafeFileName(set.Code + UnityExtensionMethods.JsonExtension));
                if (!File.Exists(setCardsFilePath))
                {
                    yield return(UnityExtensionMethods.SaveUrlToFile(set.CardsUrl, setCardsFilePath));
                }
                if (File.Exists(setCardsFilePath))
                {
                    cardGame.LoadCards(setCardsFilePath, set.Code);
                }
                else
                {
                    Debug.LogError(LoadErrorMessage + set.CardsUrl);
                    yield break;
                }
            }

            if (!string.IsNullOrEmpty(cardGame.Error))
            {
                Debug.LogError(LoadErrorMessage + cardGame.Error);
            }
            else if (setCardsLoaded)
            {
                Messenger.Show(string.Format(SetCardsLoadedMessage, cardGame.Name));
            }
        }