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));
            }
        }
        public IEnumerator UpdateCardGame(UnityCardGame cardGame)
        {
            if (cardGame == null)
            {
                cardGame = Current;
            }

            Progress.Show(cardGame);
            yield return(cardGame.Download());

            Progress.Hide();

            // Notify about the failed update, but otherwise ignore errors
            if (!string.IsNullOrEmpty(cardGame.Error))
            {
                Debug.LogError(DownloadErrorMessage + cardGame.Error);
                Messenger.Show(DownloadErrorMessage + cardGame.Error);
                cardGame.ClearError();
            }

            cardGame.Load(UpdateCardGame, LoadCards, LoadSetCards);
            if (cardGame == Current)
            {
                ResetGameScene();
            }
        }
        public IEnumerator GetCardGame(string gameUrl)
        {
            // If user attempts to download a game they already have, we should just update that game
            UnityCardGame existingGame = null;

            foreach (UnityCardGame cardGame in AllCardGames.Values)
            {
                if (cardGame.AutoUpdateUrl.Equals(new Uri(gameUrl)))
                {
                    existingGame = cardGame;
                }
            }
            if (existingGame != null)
            {
                yield return(UpdateCardGame(existingGame));

                if (string.IsNullOrEmpty(existingGame.Error))
                {
                    Select(existingGame.Id);
                }
            }
            else
            {
                yield return(DownloadCardGame(gameUrl));
            }
        }
        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));
            }
        }
        private void LookupCardGames()
        {
            if (!Directory.Exists(UnityCardGame.GamesDirectoryPath) ||
                Directory.GetDirectories(UnityCardGame.GamesDirectoryPath).Length < 1)
            {
                CreateDefaultCardGames();
            }

            foreach (string gameDirectory in Directory.GetDirectories(UnityCardGame.GamesDirectoryPath))
            {
                string gameDirectoryName = gameDirectory.Substring(UnityCardGame.GamesDirectoryPath.Length + 1);
                (string gameName, _) = CardGame.GetNameAndHost(gameDirectoryName);
                if (gameName.Equals(CardGame.DefaultName))
                {
                    Debug.LogWarning(DefaultNameWarning);
                    try
                    {
                        Directory.Delete(gameDirectory, true);
                    }
                    catch (Exception ex)
                    {
                        Debug.LogError(DeleteErrorMessage + ex.Message);
                    }
                }
                else
                {
                    var newCardGame = new UnityCardGame(this, gameDirectoryName);
                    newCardGame.ReadProperties();
                    if (!string.IsNullOrEmpty(newCardGame.Error))
                    {
                        Debug.LogError(LoadErrorMessage + newCardGame.Error);
                    }
                    else
                    {
                        AllCardGames[newCardGame.Id] = newCardGame;
                    }
                }
            }
        }
        private IEnumerator DownloadCardGame(string gameUrl)
        {
            var cardGame = new UnityCardGame(this, CardGame.DefaultName, gameUrl);

            Progress.Show(cardGame);
            yield return(cardGame.Download());

            Progress.Hide();

            cardGame.Load(UpdateCardGame, LoadCards, LoadSetCards);

            if (!string.IsNullOrEmpty(cardGame.Error))
            {
                Debug.LogError(DownloadErrorMessage + cardGame.Error);
                Messenger.Show(DownloadErrorMessage + cardGame.Error);

                if (!Directory.Exists(cardGame.GameDirectoryPath))
                {
                    yield break;
                }

                try
                {
                    Directory.Delete(cardGame.GameDirectoryPath, true);
                }
                catch (Exception ex)
                {
                    Debug.LogError(DeleteErrorMessage + ex.Message);
                }
            }
            else
            {
                AllCardGames[cardGame.Id] = cardGame;
                Select(cardGame.Id);
            }
        }
Example #7
0
 public override void Hide()
 {
     _game = null;
     base.Hide();
 }
Example #8
0
 public void Show(UnityCardGame gameToDownload)
 {
     Show();
     _game = gameToDownload;
 }