Esempio n. 1
0
        public override bool Execute(Arguments arguments)
        {
            if (arguments.Count != 1 && arguments.Count != 5)
            {
                return(false);
            }

            var count = int.Parse(arguments["count"]);

            MediaLibrary.LoadSets();

            MagicSet starterSet;
            MagicSet boosterSet1;
            MagicSet boosterSet2;
            MagicSet boosterSet3;

            if (arguments.Count == 1)
            {
                starterSet  = MediaLibrary.RandomSet();
                boosterSet1 = MediaLibrary.RandomSet();
                boosterSet2 = MediaLibrary.RandomSet();
                boosterSet3 = MediaLibrary.RandomSet();
            }
            else
            {
                starterSet  = MediaLibrary.GetSet(arguments["s"]);
                boosterSet1 = MediaLibrary.GetSet(arguments["b1"]);
                boosterSet2 = MediaLibrary.GetSet(arguments["b2"]);
                boosterSet3 = MediaLibrary.GetSet(arguments["b3"]);
            }

            Console.WriteLine("Starter: {0}\nBooster1: {1}\nBooster2: {2}\nBooster3: {3}\n",
                              starterSet.Name, boosterSet1.Name, boosterSet2.Name, boosterSet3.Name);

            for (var i = 0; i < count; i++)
            {
                var starter  = starterSet.GenerateTournamentPack();
                var booster1 = boosterSet1.GenerateBoosterPack();
                var booster2 = boosterSet2.GenerateBoosterPack();
                var booster3 = boosterSet3.GenerateBoosterPack();

                var library = new List <CardInfo>();

                library.AddRange(starter);
                library.AddRange(booster1);
                library.AddRange(booster2);
                library.AddRange(booster3);

                var ratings = CardRatings.Merge(CardRatings.Merge(boosterSet2.Ratings, boosterSet3.Ratings),
                                                CardRatings.Merge(starterSet.Ratings, boosterSet1.Ratings));

                var deck = DeckBuilder.BuildDeck(library, ratings);
                deck.LimitedCode = MagicSet.GetLimitedCode(starterSet.Name,
                                                           new[] { boosterSet1.Name, boosterSet2.Name, boosterSet3.Name });

                File.WriteAllBytes(Guid.NewGuid() + ".dec", DeckFile.Write(deck));
            }

            return(true);
        }
Esempio n. 2
0
        //[Fact]
        public void DraftLibraries()
        {
            Deck DeckEvaluator(List <Deck> candidates)
            {
                return(candidates.First());
            }

            var sets    = new[] { "M15", "M15", "M15" };
            var ratings = MediaLibrary.GetSet(sets[0]).Ratings;

            var runner = new DraftRunner();

            var results = runner.Run(
                playerCount: 8,
                sets: sets,
                ratings: ratings);

            Equal(8, results.Libraries.Count);
            True(results.Libraries.All(x => x.Count == 45));

            PrintLibraries(results.Libraries);

            var decks = new List <Deck>();

            foreach (var library in results.Libraries)
            {
                var deck = DeckBuilder.BuildDeck(library, ratings, DeckEvaluator);
                decks.Add(deck);
            }

            PrintDecks(decks);
        }
Esempio n. 3
0
        public void BuildDecks()
        {
            for (var i = 0; i < 1; i++)
            {
                var set         = MediaLibrary.GetSet("Urza's Saga");
                var pileOfCards = set.GenerateMixedPack(boosterCount: 3, tournamentCount: 1);

                Console.WriteLine("Card list:");
                Console.WriteLine("--------------------------------");
                foreach (var card in pileOfCards)
                {
                    Console.WriteLine(card);
                }

                Console.WriteLine();

                var bestDeck = DeckBuilder.BuildDeck(pileOfCards, set.Ratings);

                Console.WriteLine("Best deck:");
                Console.WriteLine("--------------------------------");


                Console.WriteLine(bestDeck);
            }
        }
Esempio n. 4
0
        //[Fact]
        public void BuildDeck1()
        {
            var library = new List <string> {
                "Void Snare",
                "Void Snare",
                "Void Snare",
                "Chief Engineer",
                "Welkin Tern",
                "Mind Sculpt",
                "Military Intelligence",
                "Coral Barrier",
                "Dissipate",
                "Frost Lynx",
                "Illusory Angel",
                "Wall of Frost",
                "Frost Lynx",
                "Cancel",
                "Coral Barrier",
                "Encrust",
                "Amphin Pathmage",
                "Glacial Crasher",
                "Chronostutter",
                "Dauntless River Marshal",
                "Kinsbaile Skirmisher",
                "Kinsbaile Skirmisher",
                "Kinsbaile Skirmisher",
                "Raise the Alarm",
                "Raise the Alarm",
                "Ephemeral Shields",
                "Solemn Offering",
                "Geist of the Moors",
                "Heliod's Pilgrim",
                "Midnight Guard",
                "Divine Verdict",
                "Marked by Honor",
                "Tireless Missionaries",
                "Sanctified Charge",
                "Boonweaver Giant",
                "Boonweaver Giant",
                "Foundry Street Denizen",
                "Crowd's Favor",
                "Crowd's Favor",
                "Hammerhand",
                "Torch Fiend",
                "Soul of Shandalar",
                "Reclamation Sage",
                "Shaman of Spring",
                "Typhoid Rats"
            };


            var deck = DeckBuilder.BuildDeck(
                library.Select(x => new CardInfo(x)),
                MediaLibrary.GetSet("M15").Ratings, decks => decks.First());
        }
Esempio n. 5
0
        private static IEnumerable <List <CardInfo> > CreateBoosters(string[] sets, List <DraftPlayer> players)
        {
            var boosters = new List <List <CardInfo> >();

            foreach (var set in sets)
            {
                for (var i = 0; i < players.Count; i++)
                {
                    var boosterPack = MediaLibrary.GetSet(set).GenerateBoosterPack();
                    boosters.Add(boosterPack);
                }
            }
            return(boosters);
        }
Esempio n. 6
0
        private List <CardInfo> GenerateLibrary()
        {
            var library = new List <CardInfo>();

            foreach (var setName in _p.BoosterPacks)
            {
                library.AddRange(MediaLibrary
                                 .GetSet(setName)
                                 .GenerateBoosterPack());
            }

            library.AddRange(MediaLibrary
                             .GetSet(_p.TournamentPack)
                             .GenerateTournamentPack());

            return(library);
        }
Esempio n. 7
0
        public void DraftLibraries()
        {
            var sets    = new[] { "Urza's Saga", "Urza's Saga", "Urza's Saga" };
            var ratings = MediaLibrary.GetSet(sets[0]).Ratings;

            var runner = new DraftRunner();

            var results = runner.Run(
                playerCount: 8,
                sets: sets,
                ratings: ratings);

            Equal(8, results.Libraries.Count);
            True(results.Libraries.All(x => x.Count == 45));

            for (var i = 0; i < 8; i++)
            {
                Console.WriteLine("Player {0}", i + 1);
                Console.WriteLine("-------------------");

                var library = results.Libraries[i];

                Console.WriteLine("White cards: {0}", library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.White)));
                Console.WriteLine("Blue cards: {0}", library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.Blue)));
                Console.WriteLine("Black cards: {0}", library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.Black)));
                Console.WriteLine("Red cards: {0}", library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.Red)));
                Console.WriteLine("Green cards: {0}", library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.Green)));
                Console.WriteLine("Colorless cards: {0}",
                                  library.Count(x => Grove.Cards.All[x.Name].HasColor(CardColor.Colorless)));

                var deck = DeckBuilder.BuildDeck(library, ratings);
                Console.WriteLine();

                Console.WriteLine("Creatures: {0}, Spells {1}",
                                  deck.Count(x => Grove.Cards.All[x.Name].Is().Creature),
                                  deck.Count(x => !Grove.Cards.All[x.Name].Is().Creature&& !Grove.Cards.All[x.Name].Is().Land));

                Console.WriteLine("-------------------");
                Console.WriteLine(deck);

                Console.WriteLine();
            }
        }
Esempio n. 8
0
        private CardRatings LoadCardRatings()
        {
            CardRatings merged = null;

            foreach (var setName in _p.BoosterPacks)
            {
                var ratings = MediaLibrary.GetSet(setName).Ratings;
                if (merged == null)
                {
                    merged = ratings;
                }
                else
                {
                    merged = CardRatings.Merge(merged, ratings);
                }
            }

            if (_p.TournamentPack == null)
            {
                return(merged);
            }

            return(CardRatings.Merge(merged, MediaLibrary.GetSet(_p.TournamentPack).Ratings));
        }