private void DoSave()
        {
            var filePathFinder = new UnityDeck(CardGameManager.Current, nameInputField.text,
                                               CardGameManager.Current.DeckFileType);

            try
            {
                if (!Directory.Exists(CardGameManager.Current.DecksDirectoryPath))
                {
                    Directory.CreateDirectory(CardGameManager.Current.DecksDirectoryPath);
                }
                File.WriteAllText(filePathFinder.FilePath, textInputField.text);
                _selectedFilePath = filePathFinder.FilePath;

                HideNewDeckPanel();
                BuildDeckFileSelectionOptions();
                foreach (var path in _deckFiles.Keys)
                {
                    Debug.Log(path);
                }

                LoadFromFileAndHide();
            }
            catch (Exception e)
            {
                Debug.LogError(DeckSaveErrorMessage + e.Message);
            }
        }
        public void ShowDeckSaveMenu()
        {
            UnityDeck deckToSave = CurrentDeck;
            bool      overwrite  = SavedDeck != null && deckToSave.Name.Equals(SavedDeck.Name);

            DeckSaver.Show(deckToSave, UpdateDeckName, OnSaveDeck, overwrite);
        }
Exemple #3
0
        public void PrintPdf()
        {
            _currentDeck.Name = nameInputField.text;
            UnityDeck deck   = _currentDeck;
            Uri       pdfUri = null;

            try
            {
                pdfUri = deck.PrintPdf();
            }
            catch (Exception e)
            {
                Debug.LogError(DeckPrintErrorMessage + e.Message + e.StackTrace);
                CardGameManager.Instance.Messenger.Show(DeckPrintErrorMessage + e.Message);
            }

            if (pdfUri == null || !pdfUri.IsAbsoluteUri)
            {
                Debug.LogError(DeckPrintOpenErrorMessage);
                CardGameManager.Instance.Messenger.Show(DeckPrintOpenErrorMessage);
                return;
            }

#if ENABLE_WINMD_SUPPORT
            UnityEngine.WSA.Application.InvokeOnUIThread(async() => {
                try
                {
                    var file = await Windows.Storage.StorageFile.GetFileFromPathAsync(pdfUri.LocalPath);
                    if (file != null)
                    {
                        // Launch the retrieved file
                        bool success = await Windows.System.Launcher.LaunchFileAsync(file);
                        if (!success)
                        {
                            Debug.LogError(DeckPrintOpenPathErrorMessage + pdfUri.LocalPath);
                            CardGameManager.Instance.Messenger.Show(DeckPrintOpenPathErrorMessage + pdfUri.LocalPath);
                        }
                    }
                    else
                    {
                        Debug.LogError(DeckPrintOpenPathErrorMessage + pdfUri.LocalPath);
                        CardGameManager.Instance.Messenger.Show(DeckPrintOpenPathErrorMessage + pdfUri.LocalPath);
                    }
                }
                catch (Exception e)
                {
                    Debug.LogError(e.Message + e.StackTrace);
                    CardGameManager.Instance.Messenger.Show(DeckPrintOpenPathErrorMessage + pdfUri.LocalPath);
                }
            }, false);
#else
            Application.OpenURL(pdfUri.AbsoluteUri); // This likely fails, so show the file location
            CardGameManager.Instance.Messenger.Show(DeckPrintOpenPathErrorMessage + pdfUri.AbsoluteUri);
#endif
        }
Exemple #4
0
 public void Show(UnityDeck deckToShow, OnNameChangeDelegate nameChangeCallback = null,
                  OnDeckSavedDelegate deckSaveCallback = null, bool overwrite = false)
 {
     Show();
     _currentDeck        = deckToShow ?? new UnityDeck(CardGameManager.Current);
     _nameChangeCallback = nameChangeCallback;
     _deckSaveCallback   = deckSaveCallback;
     _doesAutoOverwrite  = overwrite;
     nameInputField.text = _currentDeck.Name;
     textOutputArea.text = _currentDeck.ToString();
 }
Exemple #5
0
        private void LoadDeck(UnityDeck deck)
        {
            foreach (Card card in deck.Cards)
            {
                foreach (GameBoardCard boardCard in CardGameManager.Current.GameBoardCards.Where(boardCard =>
                                                                                                 card.Id.Equals(boardCard.Card)))
                {
                    CreateGameBoards(boardCard.Boards);
                }
            }

            Dictionary <string, List <Card> > extraGroups = deck.GetExtraGroups();
            List <Card>      extraCards = deck.GetExtraCards();
            List <UnityCard> deckCards  = deck.Cards.Where(card => !extraCards.Contains(card)).Cast <UnityCard>().ToList();

            deckCards.Shuffle();

            string deckName = !string.IsNullOrEmpty(CardGameManager.Current.GamePlayDeckName)
                ? CardGameManager.Current.GamePlayDeckName
                : deck.Name;

            if (CgsNetManager.Instance.isNetworkActive && CgsNetManager.Instance.LocalPlayer != null)
            {
                CgsNetManager.Instance.LocalPlayer.RequestNewDeck(deckName, deckCards);
                var i = 1;
                foreach (KeyValuePair <string, List <Card> > cardGroup in extraGroups)
                {
                    Vector2 position = NextDeckPosition + Vector2.right * CardGameManager.PixelsPerInch * i *
                                       CardGameManager.Current.CardSize.X;
                    CgsNetManager.Instance.LocalPlayer.RequestNewCardStack(cardGroup.Key,
                                                                           cardGroup.Value.Cast <UnityCard>(), position);
                    i++;
                }
            }
            else
            {
                _soloDeckStack = CreateCardStack(deckName, deckCards, NextDeckPosition);
                var i = 1;
                foreach (KeyValuePair <string, List <Card> > cardGroup in extraGroups)
                {
                    Vector2 position = NextDeckPosition + Vector2.right * CardGameManager.PixelsPerInch * i *
                                       CardGameManager.Current.CardSize.X;
                    CreateCardStack(cardGroup.Key, (List <UnityCard>)cardGroup.Value.Cast <UnityCard>(), position);
                    i++;
                }
            }

            NextDeckPosition += Vector2.down * CardGameManager.PixelsPerInch * CardGameManager.Current.CardSize.Y;

            PromptForHand();
        }
        private void LoadDeck(UnityDeck deck)
        {
            foreach (var card in deck.Cards)
            {
                foreach (var gameBoardCard in CardGameManager.Current.GameBoardCards.Where(boardCard =>
                                                                                           card.Id.Equals(boardCard.Card)))
                {
                    CreateGameBoards(gameBoardCard.Boards);
                }
            }

            var extraGroups = deck.GetExtraGroups();
            var extraCards  = deck.GetExtraCards();
            var deckCards   = deck.Cards.Where(card => !extraCards.Contains(card)).Cast <UnityCard>().ToList();

            deckCards.Shuffle();

            var deckName = !string.IsNullOrEmpty(CardGameManager.Current.GamePlayDeckName)
                ? CardGameManager.Current.GamePlayDeckName
                : deck.Name;
            var newDeckPosition = NewDeckPosition;

            if (CgsNetManager.Instance.isNetworkActive && CgsNetManager.Instance.LocalPlayer != null)
            {
                CgsNetManager.Instance.LocalPlayer.RequestNewDeck(deckName, deckCards);
                var i = 1;
                foreach (var cardGroup in extraGroups)
                {
                    var position = newDeckPosition + Vector2.right *
                                   (CardGameManager.PixelsPerInch * i * CardGameManager.Current.CardSize.X + DeckPositionBuffer);
                    CgsNetManager.Instance.LocalPlayer.RequestNewCardStack(cardGroup.Key,
                                                                           cardGroup.Value.Cast <UnityCard>(), position);
                    i++;
                }
            }
            else
            {
                _soloDeckStack = CreateCardStack(deckName, deckCards, newDeckPosition);
                var i = 1;
                foreach (var cardGroup in extraGroups)
                {
                    var position = newDeckPosition + Vector2.right *
                                   (CardGameManager.PixelsPerInch * i * CardGameManager.Current.CardSize.X);
                    CreateCardStack(cardGroup.Key, cardGroup.Value.Cast <UnityCard>().ToList(), position);
                    i++;
                }
            }


            PromptForHand();
        }
        public void DoSaveDontOverwrite()
        {
            var filePathFinder = new UnityDeck(CardGameManager.Current, nameInputField.text,
                                               CardGameManager.Current.DeckFileType);

            if (File.Exists(filePathFinder.FilePath))
            {
                CardGameManager.Instance.StartCoroutine(WaitToPromptOverwrite());
            }
            else
            {
                DoSave();
            }
        }
        public void Sort()
        {
            UnityDeck sortedDeck = CurrentDeck;

            sortedDeck.Sort();
            foreach (CardZone zone in CardZones)
            {
                zone.transform.DestroyAllChildren();
            }
            foreach (Card card in sortedDeck.Cards)
            {
                AddCard((UnityCard)card);
            }
        }
Exemple #9
0
        public void AttemptSaveAndHide()
        {
            var filePathFinder = new UnityDeck(CardGameManager.Current, nameInputField.text,
                                               CardGameManager.Current.DeckFileType);

            if (!_doesAutoOverwrite && File.Exists(filePathFinder.FilePath))
            {
                CardGameManager.Instance.Messenger.Prompt(OverWriteDeckPrompt, SaveToFile);
            }
            else
            {
                SaveToFile();
            }

            Hide();
        }
 public void LoadFromFileAndHide()
 {
     try
     {
         var deckText = File.ReadAllText(_selectedFilePath);
         var newDeck  = UnityDeck.Parse(CardGameManager.Current, _deckFiles[_selectedFilePath],
                                        CardGameManager.Current.DeckFileType, deckText);
         _loadCallback?.Invoke(newDeck);
         Hide();
     }
     catch (Exception e)
     {
         Debug.LogError(DeckLoadErrorMessage + e.Message);
         CardGameManager.Instance.Messenger.Show(DeckLoadErrorMessage + e.Message);
     }
 }
        private void LoadDeck(UnityDeck deck)
        {
            if (deck == null)
            {
                return;
            }

            Clear();
            foreach (Card card in deck.Cards)
            {
                AddCard((UnityCard)card);
            }
            SavedDeck = deck;
            UpdateDeckStats();
            scrollRect.horizontalNormalizedPosition = 0;
        }
Exemple #12
0
        private static void SaveToFile(UnityDeck deck, OnDeckSavedDelegate deckSaveCallback = null)
        {
            try
            {
                if (!Directory.Exists(CardGameManager.Current.DecksDirectoryPath))
                {
                    Directory.CreateDirectory(CardGameManager.Current.DecksDirectoryPath);
                }
                File.WriteAllText(deck.FilePath, deck.ToString());
            }
            catch (Exception e)
            {
                Debug.LogError(DeckSaveErrorMessage + e.Message);
            }

            deckSaveCallback?.Invoke(deck);
        }
Exemple #13
0
        public void ChangeName(string newName)
        {
            if (_nameChangeCallback != null)
            {
                newName = _nameChangeCallback(newName);
            }
            if (!string.IsNullOrEmpty(newName))
            {
                nameInputField.text = newName;
            }
            var deck = new UnityDeck(CardGameManager.Current, newName, CardGameManager.Current.DeckFileType);

            foreach (var card in _currentDeck.Cards)
            {
                deck.Add((UnityCard)card);
            }
            textOutputArea.text = deck.ToString();
        }