示例#1
0
        public Game NewGame(List <TournamentPlayer> players)
        {
            if (players.Count != 2)
            {
                throw new ArgumentException("Hearthstone games must have exactly 2 players");
            }
            Game game          = new Game(this);
            int  numBonusCards = 0;

            foreach (TournamentPlayer templatePlayer in players)
            {
                if (templatePlayer.MainDeck.Count() != this.Starting_DeckSize)
                {
                    throw new ArgumentException("Hearthstone decks must start with exactly 30 cards");
                }
                Writable_GamePlayer newPlayer = new Writable_GamePlayer(templatePlayer);
                newPlayer.InitializeHealth(30);
                game.AddPlayer(newPlayer);
                // draw a bunch of cards from the player's deck
                DrawEffect drawEffect = new DrawEffect(new ConstantValueProvider <Writable_GamePlayer, Controlled>(newPlayer), DrawFromDeck_Provider.FromController(),
                                                       new ConstantValueProvider <int, Controlled>(this.Starting_HandSize + numBonusCards));
                drawEffect.ControllerID = newPlayer.GetID((Readable_GamePlayer)null);
                drawEffect.Process(game);
                // potentially draw a Coin too
                DrawEffect bonusCards = new DrawEffect(new ConstantValueProvider <Writable_GamePlayer, Controlled>(newPlayer), new ConstantValueProvider <ReadableCard, Controlled>(HearthstoneReferee.Coin),
                                                       new ConstantValueProvider <int, Controlled>(numBonusCards));
                bonusCards.ControllerID = newPlayer.GetID((Readable_GamePlayer)null);
                bonusCards.Process(game);
                // each player gets one more card than the previous and one additional Coin
                numBonusCards++;
            }
            return(game);
        }
示例#2
0
        public override void Process(Game game)
        {
            Writable_GamePlayer monsterController = this.monsterController_provider.GetValue(this, game, (Writable_GamePlayer)null);
            int numberToSpawn = this.countProvider.GetValue(this, game, default(int));
            //monsterController.get
            List <ID <Readable_MonsterCard> > territory = monsterController.MonsterIDsInPlay.GetWritable();

            for (int i = 0; i < numberToSpawn; i++)
            {
                Writable_MonsterCard monster = this.monsterToSpawn.Clone((Writable_MonsterCard)null);
                monster.ID           = IDFactory.NewID();
                monster.ControllerID = monsterController.GetID((Readable_GamePlayer)null);
                territory.Add(monster.GetID((Readable_MonsterCard)null));
                game.AddCard(monster);
            }
        }