コード例 #1
0
ファイル: Coppersmith.cs プロジェクト: razzielx/Dominion
            public override CardCost ModifyValue(CardCost currentValue, ITreasureCard card)
            {
                if (card is Copper)
                    return currentValue + 1;

                return currentValue;
            }
コード例 #2
0
ファイル: CardCostTests.cs プロジェクト: razzielx/Dominion
 public void Can_create_CardCost_by_adding_to_existing_CardCost()
 {
     CardCost cost = new CardCost(5);
     cost += 2;
     cost.Money.ShouldEqual(7);
     cost.Potions.ShouldEqual(0);
 }
コード例 #3
0
ファイル: CardCostTests.cs プロジェクト: razzielx/Dominion
 public void Can_create_CardCost_by_subtracting_from_existing_CardCost()
 {
     CardCost cost = new CardCost(5);
     var newCost = cost - 2;
     newCost.Money.ShouldEqual(3);
     newCost.Potions.ShouldEqual(0);
 }
コード例 #4
0
ファイル: Card.cs プロジェクト: razzielx/Dominion
 protected Card(CardCost cost)
 {
     Id = Guid.NewGuid();
     Cost = cost;
     _currentZone = new NullZone();
     _zoneChanger = zone => _currentZone = zone;            
 }
コード例 #5
0
ファイル: CardCostTests.cs プロジェクト: razzielx/Dominion
 public void CardCost_3P_minus_CardCost_2P_equals_1()
 {
     CardCost cost3P = new CardCost(3, 1);
     CardCost cost2P = new CardCost(2, 1);
     var newCost = cost3P - cost2P;
     newCost.Money.ShouldEqual(1);
     newCost.Potions.ShouldEqual(0);
 }
コード例 #6
0
 public static ISelectionSpecification SelectPileCostingExactlyX(CardCost cost)
 {
     return new SelectionSpecification
     {
         MatchFunction = cards => cards.Count() == 1 && cost == cards.Single().Cost,
         ActivityType = ActivityType.SelectPile,
         Cost = cost
     };
 }
コード例 #7
0
 public static ISelectionSpecification SelectPileCostingUpToX(CardCost costUpTo)
 {
     return new SelectionSpecification
     {
         MatchFunction = cards => cards.Count() == 1 && costUpTo.IsEnoughFor(cards.Single()),
         ActivityType = ActivityType.SelectPile,
         Cost = costUpTo
     };
 }
コード例 #8
0
ファイル: Forge.cs プロジェクト: razzielx/Dominion
 private void AddGainActivityForCost(TurnContext context, ICard source, CardCost cost)
 {
     if (context.CanGainOfCost(cost))
     {
         var gainActivity = Activities.GainACardCostingExactlyX(context.Game.Log, context.ActivePlayer,
                                                                cost, context.ActivePlayer.Discards, source);
         _activities.Add(gainActivity);
     }
     else
     {
         context.Game.Log.LogMessage("{0} could gain no card of appropriate cost", context.ActivePlayer);
     }
 }
コード例 #9
0
ファイル: Activities.cs プロジェクト: trentkerin/Dominion
 public static SelectPileActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost, CardZone destination)
 {
     return new SelectPileActivity(log, player, string.Format("Select a card to gain of cost {0} or less", cost),
                                   SelectionSpecifications.SelectPileCostingUpToX(cost))
     {
         AfterPileSelected = pile =>
         {
             var card = pile.TopCard;
             card.MoveTo(destination);
             log.LogGain(player, card);
         }
     };
 }
コード例 #10
0
 public static SelectPileActivity GainACardCostingExactlyX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new SelectPileActivity(log, player, string.Format("Select a card to gain with a cost of exactly {0}", cost),
                                   SelectionSpecifications.SelectPileCostingExactlyX(cost), source)
     {
         AfterPileSelected = pile =>
         {
             var card = pile.TopCard;
             card.MoveTo(destination);
             log.LogGain(player, card);
         },
         Hint = ActivityHint.GainCards
     };
 }
コード例 #11
0
ファイル: Activities.cs プロジェクト: razzielx/Dominion
 public static GainACardActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new GainACardActivity(log, player, string.Format("Select a card to gain of cost {0} or less.", cost),
                                  SelectionSpecifications.SelectPileCostingUpToX(cost), destination, source);
 }
コード例 #12
0
ファイル: Activities.cs プロジェクト: trentkerin/Dominion
 public static SelectPileActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost)
 {
     return GainACardCostingUpToX(log, player, cost, player.Discards);
 }
コード例 #13
0
 public virtual CardCost ModifyValue(CardCost currentValue, ITreasureCard card)
 {
     return currentValue;
 }
コード例 #14
0
ファイル: Mine.cs プロジェクト: trentkerin/Dominion
 public void AddGainActivity(IGameLog log, Player player, CardCost upToCost)
 {
     var activity = Activities.GainACardCostingUpToX(log, player, upToCost, player.Hand);
     activity.Specification.CardTypeRestriction = typeof (ITreasureCard);
     _activities.Add(activity);
 }
コード例 #15
0
ファイル: TestCard.cs プロジェクト: razzielx/Dominion
 public TestCard(CardCost cost)
     : base(cost)
 {
 }
コード例 #16
0
ファイル: TestCard.cs プロジェクト: razzielx/Dominion
 public TestCardPile(CardCost cost)
 {
     AddCard(new TestCard(cost));
 }
コード例 #17
0
ファイル: DoBuysActivity.cs プロジェクト: razzielx/Dominion
 public DoBuysActivity(Player activePlayer, int buys, CardCost buyValue)
     : base(null, activePlayer, string.Format("Select card(s) to buy. You have {0} buy(s) for a total of {1}.", buys, buyValue), ActivityType.DoBuys, null)
 {
 }
コード例 #18
0
 public AvailableSpendViewModel(CardCost availableSpend)
 {
     Money = availableSpend.Money;
     Potions = availableSpend.Potions;
     DisplayValue = availableSpend.ToString();
 }
コード例 #19
0
ファイル: Activities.cs プロジェクト: razzielx/Dominion
 public static GainACardActivity GainACardCostingExactlyX(IGameLog log, Player player, CardCost cost, CardZone destination, ICard source)
 {
     return new GainACardActivity(log, player,
                                  string.Format("Select a card to gain with a cost of exactly {0}.", cost),
                                  SelectionSpecifications.SelectPileCostingExactlyX(cost), destination, source);
 }
コード例 #20
0
ファイル: TurnContext.cs プロジェクト: razzielx/Dominion
 public bool CanGainOfCost(CardCost cardCost)
 {
     return Game.Bank.Piles.Any(p => !p.IsEmpty && p.TopCard.Cost == cardCost);
 }
コード例 #21
0
ファイル: Activities.cs プロジェクト: razzielx/Dominion
 public static GainACardActivity GainACardCostingUpToX(IGameLog log, Player player, CardCost cost, ICard source)
 {
     return GainACardCostingUpToX(log, player, cost, player.Discards, source);
 }
コード例 #22
0
ファイル: Activities.cs プロジェクト: razzielx/Dominion
 public static ISelectPileActivity SelectACardForOpponentToGain(TurnContext context, Player player, Player victim, CardCost cost, ICard source)
 {
     return new SelectPileActivity(context.Game.Log, player, string.Format("Select a card for {0} to gain of cost {1}.", victim.Name, cost),
                                   SelectionSpecifications.SelectPileCostingExactlyX(cost), source)
     {
         AfterPileSelected = pile =>
         {                    
             var card = pile.TopCard;
             card.MoveTo(victim.Discards);
             context.Game.Log.LogGain(victim, card);
         },
         Hint = ActivityHint.OpponentGainCards
     };
 }
コード例 #23
0
ファイル: CardCostTests.cs プロジェクト: razzielx/Dominion
        public void CardCosts_with_same_values_are_equal()
        {
            CardCost cost1 = new CardCost(3, 1);
            CardCost cost2 = new CardCost(3, 1);

            Assert.AreEqual(cost1, cost2);
            Assert.That(cost1 == cost2);
        }