Ejemplo n.º 1
0
        public async void GeneratePacks(object sender, EventArgs args)
        {
            bool valid = Int32.TryParse(this.PackNumEntry.Text, out int packNum);

            if (!valid || packNum < 0)
            {
                await this.DisplayAlert("Invalid Pack Number", $"'{this.PackNumEntry.Text}' is not a valid number", "Okay");

                return;
            }

            CubeParser parser;

            try
            {
                parser = new CubeParser(this.CubeDefEditor.Text, ConfigurationManager.ActiveDeck);
            }
            catch (Exception exc)
            {
                await this.DisplayAlert("Failed to Compile", $"Error: ${exc.Message}", "Okay");

                return;
            }

            List <List <PackCard> > cards = new List <List <PackCard> >();

            try
            {
                for (int i = 0; i < packNum; i++)
                {
                    List <PackCard> pack = parser.MakePack();
                    cards.Add(pack);
                }
            }
            catch (Exception exc)
            {
                await this.DisplayAlert("Failed to Exectue", $"Error: ${exc.Message}", "Okay");

                return;
            }

            Deck generated = new Deck(false)
            {
                Name = "Generated Packs"
            };

            for (int i = 0; i < cards.Count; i++)
            {
                foreach (PackCard card in cards[i])
                {
                    generated.AddCard(card.Card, Deck.MASTER, !card.Foil);
                    generated.AddCard(card.Card, $"Pack {i+1}", !card.Foil);
                }
            }
            generated.RemoveBoard("Mainboard");
            generated.RemoveBoard("Sideboard");

            foreach (Deck.BoardInfo info in generated.BoardInfos)
            {
                info.Editable = info.Viewable = info.Name != Deck.MASTER;
            }

            await Navigation.PushAsync(new DeckPage(generated, false));
        }