private void LoadMasterBtn_Click(object sender, EventArgs e)
        {
            string           filename   = "master.cards";
            CardCollection   collection = CardCollection.Load(filename);
            List <Expansion> allExp     = new List <Expansion>();

            foreach (Expansion exp in Enum.GetValues(typeof(Expansion)))
            {
                allExp.Add(exp);
            }

            DataTable table = new DataTable("cardsTable");

            table.Columns.Add(new DataColumn("Name"));
            table.Columns.Add(new DataColumn("Type"));
            table.Columns.Add(new DataColumn("Traits"));
            table.Columns.Add(new DataColumn("Cost"));
            table.Columns.Add(new DataColumn("Expansion"));
            table.Columns.Add(new DataColumn("Num. in Deck"));

            foreach (InvestigatorCard card in collection.InDeck)
            {
                DataRow row = table.NewRow();
                row.SetField("Name", card.Name);
                row.SetField("Type", card.CardType.ToString());
                row.SetField("Traits", string.Join(", ", card.Traits));
                row.SetField("Cost", (card.CardType == InvestigatorCardType.Asset) ? ((AssetCard)card).Cost.ToString() : "-");
                row.SetField("Expansion", card.Expansion.ToString());
                row.SetField("Num. in Deck", collection.GetQuantityInCollectionDeck(card, allExp));
                table.Rows.Add(row);
            }

            CardDataGrid.DataSource = table;
            CardDataGrid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
        }
        /// <summary>
        /// Loads and displays all cards of a given type from file / stored manual input.
        /// </summary>
        /// <param name="type"></param>
        private void LoadAndDisplay(InvestigatorCardType type)
        {
            try
            {
                IEnumerable <InvestigatorCard> cards;

                switch (type)
                {
                case InvestigatorCardType.Artifact:
                    cards = HTMLReader.GetArtifacts();
                    break;

                case InvestigatorCardType.Asset:
                    cards = HTMLReader.GetAssets();
                    break;

                case InvestigatorCardType.Spell:
                    cards = HTMLReader.GetSpells();
                    break;

                case InvestigatorCardType.Condition:
                    cards = HTMLReader.GetConditions();
                    break;

                case InvestigatorCardType.UniqueAsset:
                    cards = UniqueAssetsManual.GetAllUniqueAssets();
                    break;

                default:
                    throw new Exception("Type not handled: " + type);
                }

                MessageBox.Show(string.Format("{0} cards loaded.", cards.Count()));

                DataTable table = new DataTable("cardsTable");
                table.Columns.Add(new DataColumn("Name"));
                table.Columns.Add(new DataColumn("Traits"));
                table.Columns.Add(new DataColumn("Expansion"));

                foreach (InvestigatorCard card in cards)
                {
                    DataRow row = table.NewRow();
                    row.SetField("Name", card.Name);
                    row.SetField("Traits", string.Join(", ", card.Traits));
                    row.SetField("Expansion", card.Expansion.ToString());
                    table.Rows.Add(row);
                }

                CardDataGrid.DataSource = table;
                CardDataGrid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n---\n" + ex.StackTrace);
            }
        }