Example #1
0
            public bool ExtractCards(string faction, CardRandomizerCardPool pool, CardRandomizerCardNumber numbers)
            {
                for (int i = 0; i < numbers.Champions; i++)
                {
                    int c = pool.ExtractRandomChampion(faction);
                    if (c == -1)
                    {
                        return(false);
                    }

                    Champions.Add(Program.database.Champions[c].Name);
                }
                Champions.Sort();

                for (int i = 0; i < numbers.Spells; i++)
                {
                    int c = pool.ExtractRandomSpell(faction);
                    if (c == -1)
                    {
                        return(false);
                    }

                    Spells.Add(Program.database.Spells[c].Name);
                }
                Spells.Sort();

                for (int i = 0; i < numbers.Relics; i++)
                {
                    int c = pool.ExtractRandomRelic(faction);
                    if (c == -1)
                    {
                        return(false);
                    }

                    Relics.Add(Program.database.Relics[c].Name);
                }
                Relics.Sort();

                for (int i = 0; i < numbers.Equips; i++)
                {
                    int c = pool.ExtractRandomEquipment(faction);
                    if (c == -1)
                    {
                        return(false);
                    }

                    Equips.Add(Program.database.Equipments[c].Name);
                }
                Equips.Sort();

                return(true);
            }
Example #2
0
        private void ButtonGenerateCards_Click(object sender, EventArgs e)
        {
            if (!Program.database.ready)
            {
                SetStatus("Database is not ready");
                return;
            }

            // stage 1: generate settings
            if (!ValidateSettings())
            {
                return;
            }

            string MainFaction      = ComboMainFaction.SelectedItem.ToString();
            string SecondaryFaction = ComboSecondaryFaction.SelectedItem.ToString();

            CardRandomizerCardNumber mfcn = new CardRandomizerCardNumber();
            CardRandomizerCardNumber sfcn = new CardRandomizerCardNumber();
            CardRandomizerFlags      crf  = new CardRandomizerFlags();

            uint.TryParse(MFCChampions.Text, out mfcn.Champions);
            uint.TryParse(MFCSpells.Text, out mfcn.Spells);
            uint.TryParse(MFCRelics.Text, out mfcn.Relics);
            uint.TryParse(MFCEquips.Text, out mfcn.Equips);
            uint.TryParse(SFCChampions.Text, out sfcn.Champions);
            uint.TryParse(SFCSpells.Text, out sfcn.Spells);
            uint.TryParse(SFCRelics.Text, out sfcn.Relics);
            uint.TryParse(SFCEquips.Text, out sfcn.Equips);

            crf.IsHighlander          = CheckHighlander.Checked;
            crf.AllowUnforgeableCards = CheckAllowUnforgeableCards.Checked;
            crf.AllowBannedCards      = CheckboxAllowBannedCards.Checked;
            crf.AllowSplitCards       = CheckAllowSplitCards.Checked;

            // stage 2: add runes to the pool, according to the settings
            SetStatus("Loading cards to the pool...");

            List <string> factions = new List <string>();

            factions.Add(MainFaction);
            if (SecondaryFaction != "None")
            {
                factions.Add(SecondaryFaction);
            }

            CardRandomizerCardPool pool = new CardRandomizerCardPool();

            pool.LoadCardsFromDatabase(factions, crf);

            // stage 3: extract runes from the pool, according to the settings

            SetStatus("Generating result...");
            CardRandomizerFactionResultList mfresult = new CardRandomizerFactionResultList();
            CardRandomizerFactionResultList sfresult = new CardRandomizerFactionResultList();

            if (!mfresult.ExtractCards(MainFaction, pool, mfcn))
            {
                SetStatus("Failed to generate result for main faction");
                return;
            }

            if (SecondaryFaction != "None")
            {
                if (!sfresult.ExtractCards(SecondaryFaction, pool, sfcn))
                {
                    SetStatus("Failed to generate result for secondary faction");
                    return;
                }
            }

            Clipboard.SetText(mfresult.ToString() + (SecondaryFaction == "None" ? "" : "\n" + sfresult.ToString()));
            SetStatus("Copied to clipboard");
        }