private TriadDeck FindDeckToUseFor(TriadNpc npc)
        {
            PlayerSettingsDB settingsDB = PlayerSettingsDB.Get();

            TriadCard[] cardsCopy = null;
            if (settingsDB.lastDeck.ContainsKey(npc))
            {
                TriadDeck savedDeck = PlayerSettingsDB.Get().lastDeck[npc];
                if (savedDeck != null && savedDeck.knownCards.Count == 5)
                {
                    cardsCopy = savedDeck.knownCards.ToArray();
                }
            }

            if (cardsCopy == null)
            {
                cardsCopy = new TriadCard[5];

                if (PlayerDeck == null)
                {
                    Array.Copy(settingsDB.starterCards, cardsCopy, cardsCopy.Length);
                }
                else
                {
                    Array.Copy(PlayerDeck.knownCards.ToArray(), cardsCopy, cardsCopy.Length);
                }
            }

            return(new TriadDeck(cardsCopy));
        }
        public void SetPlayerDeck(TriadDeck deck, bool notifySetupChange = true)
        {
            Logger.WriteLine("Game.SetPlayerDeck: {0}", deck);
            PlayerDeck = deck;

            if (Npc != null && deck != null)
            {
                PlayerSettingsDB.Get().UpdatePlayerDeckForNpc(Npc, deck);
            }

            OnDeckChanged?.Invoke(deck);
            if (notifySetupChange)
            {
                OnSetupChanged?.Invoke(this);
            }
        }