private void GenerateRandomDeck()
        {
            this.appDataContext.DeckRating.Value = 0;
            this.appDataContext.WebRating.Value  = 0;
            var kingdomBuilder = new Dominion.GameConfigBuilder();

            Dominion.Card[] allCards = this.appDataContext.AllCards.CurrentCards.Select(c => c.cardShapedObject as Dominion.Card).Where(c => c != null).ToArray();
            IEnumerable <Dominion.Event>    allEvents    = this.appDataContext.AllCards.CurrentCards.Select(c => c.cardShapedObject as Dominion.Event).Where(c => c != null);
            IEnumerable <Dominion.Landmark> allLandMarks = this.appDataContext.AllCards.CurrentCards.Select(c => c.cardShapedObject as Dominion.Landmark).Where(c => c != null);

            kingdomBuilder.GenerateCompletelyRandomKingdom(allCards, allEvents, allLandMarks, MainPage.random);
            Dominion.GameDescription gameDescription = kingdomBuilder.ToGameDescription();
            this.appDataContext.PopulateFromGameDescription(gameDescription);
        }
Ejemplo n.º 2
0
        public Dominion.GameConfig GetGameConfig()
        {
            Dominion.StartingCardSplit player1Split = this.player1Strategy.StartingCardSplit.Value;
            Dominion.StartingCardSplit player2Split = this.player2Strategy.StartingCardSplit.Value;
            Dominion.Card[]            kingdomCards = this.currentDeck.Cards.Select(c => c.dominionCard).ToArray();
            DominionCard baneCard = this.BaneCards.CurrentCards.FirstOrDefault();

            var builder = new Dominion.GameConfigBuilder();

            builder.SetKingdomPiles(kingdomCards);
            if (baneCard != null)
            {
                builder.SetBaneCard(baneCard.dominionCard);
            }

            builder.useColonyAndPlatinum = this.UseColonyPlatinum.Value;
            builder.useShelters          = this.UseShelters.Value;
            builder.SetCardSplitPerPlayer(new Dominion.StartingCardSplit[] { player1Split, player2Split });

            return(builder.ToGameConfig());
        }
 private void GenerateRandomDeck()
 {
     this.appDataContext.DeckRating.Value = 0;
     this.appDataContext.WebRating.Value = 0;
     var kingdomBuilder = new Dominion.GameConfigBuilder();
     kingdomBuilder.GenerateCompletelyRandomKingdom(this.appDataContext.AllCards.CurrentCards.Select(c => c.dominionCard), MainPage.random);
     Dominion.GameDescription gameDescription = kingdomBuilder.ToGameDescription();
     this.appDataContext.PopulateFromGameDescription(gameDescription);
 }
Ejemplo n.º 4
0
        private void SimulateGameButtonClick(object sender, RoutedEventArgs e)
        {
            if (!CanSimulateStrategies())
            {
                return;
            }

            var uiScheduler = System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext();

            Dominion.Strategy.Description.StrategyDescription player1Descr = this.appDataContext.player1Strategy.ConvertToDominionStrategy();
            Dominion.Strategy.Description.StrategyDescription player2Descr = this.appDataContext.player2Strategy.ConvertToDominionStrategy();

            System.Threading.Tasks.Task <StrategyUIResults> .Factory.StartNew(() =>
            {
                string player1nameAppend, player2nameAppend;
                GetStrategyNames(player1Descr, player2Descr, out player1nameAppend, out player2nameAppend);

                string player1Name = "Player 1: " + player1nameAppend;
                string player2Name = "Player 2: " + player2nameAppend;

                var playerActions = new Dominion.Strategy.PlayerAction[]
                {
                    player1Descr.ToPlayerAction(player1Name),
                    player2Descr.ToPlayerAction(player2Name)
                };

                var builder = new Dominion.GameConfigBuilder();
                Dominion.Strategy.PlayerAction.SetKingdomCards(builder, playerActions[0], playerActions[1]);

                builder.useColonyAndPlatinum = false;
                builder.useShelters          = false;
                builder.CardSplit            = Dominion.StartingCardSplit.Split43;

                bool rotateWhoStartsFirst = true;
                int numberOfGames         = 1000;

                Dominion.GameConfig gameConfig = builder.ToGameConfig();
                var strategyComparison         = new Dominion.Data.StrategyComparison(playerActions, gameConfig, rotateWhoStartsFirst, numberOfGames);

                Dominion.Data.StrategyComparisonResults strategyComparisonResults = strategyComparison.ComparePlayers();

                var htmlGenerator = new HtmlRenderer.HtmlReportGenerator(strategyComparisonResults);

                var stringWriter = new System.IO.StringWriter();
                var textWriter   = new Dominion.IndentedTextWriter(stringWriter);

                htmlGenerator.CreateHtmlReport(textWriter);
                stringWriter.Flush();
                string resultHtml = stringWriter.GetStringBuilder().ToString();
                return(new StrategyUIResults()
                {
                    StrategyReport = resultHtml,
                    Player1Name = player1Name,
                    Player2Name = player2Name,
                    Player1WinPercent = strategyComparisonResults.PlayerWinPercent(0),
                    Player2WinPercent = strategyComparisonResults.PlayerWinPercent(1),
                    TiePercent = strategyComparisonResults.TiePercent,
                });
            }).ContinueWith(async(continuation) =>
            {
                var results = (StrategyUIResults )continuation.Result;

                this.appDataContext.StrategyReport.Value           = results.StrategyReport;
                this.appDataContext.Player1Name.Value              = results.Player1Name;
                this.appDataContext.Player2Name.Value              = results.Player2Name;
                this.appDataContext.Player1WinPercent.Value        = results.Player1WinPercent;
                this.appDataContext.Player2WinPercent.Value        = results.Player2WinPercent;
                this.appDataContext.TiePercent.Value               = results.TiePercent;
                this.appDataContext.StrategyResultsAvailable.Value = true;
            }, uiScheduler);
        }