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); } }
public override void Hide() { _game = null; base.Hide(); }
public void Show(UnityCardGame gameToDownload) { Show(); _game = gameToDownload; }