本文整理汇总了C#中Dominion.PlayerState.DoPlayAction方法的典型用法代码示例。如果您正苦于以下问题:C# PlayerState.DoPlayAction方法的具体用法?C# PlayerState.DoPlayAction怎么用?C# PlayerState.DoPlayAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dominion.PlayerState
的用法示例。
在下文中一共展示了PlayerState.DoPlayAction方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoSpecializedAction
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
{
// TODO Make sure throne room, Kings Court and procession stay in play when they play a duration card.
// throw new NotImplementedException
Card cardToPlay = currentPlayer.RequestPlayerChooseCardToRemoveFromHandForPlay(gameState, Delegates.IsActionCardPredicate, isTreasure: false, isAction: true, isOptional: false);
if (cardToPlay != null)
{
currentPlayer.DoPlayAction(cardToPlay, gameState, countTimes: 2);
}
}
示例2: DoSpecializedAction
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
{
gameState.gameLog.PushScope();
Card actionOne = DrawAndRevealTillFindAnActionIsntGolem(currentPlayer, gameState);
Card actionTwo = DrawAndRevealTillFindAnActionIsntGolem(currentPlayer, gameState);
currentPlayer.MoveRevealedCardsToDiscard(cardToMove => !cardToMove.Equals(actionOne) && !cardToMove.Equals(actionTwo), gameState);
// set the cards asside in case golem plays other cards that also must be revealed.
currentPlayer.MoveRevealedCardsToSetAside();
if (actionOne != null && actionTwo != null)
{
Card cardToPlayFirst = currentPlayer.actions.ChooseCardToPlayFirst(gameState, actionOne, actionTwo);
if (cardToPlayFirst != actionOne && cardToPlayFirst != actionTwo)
{
throw new Exception("Must pick one of the actions to player first");
}
// swap order;
if (cardToPlayFirst == actionTwo)
{
actionTwo = actionOne;
actionOne = cardToPlayFirst;
}
}
if (actionOne != null)
{
currentPlayer.cardsSetAside.RemoveCard(actionOne);
currentPlayer.DoPlayAction(actionOne, gameState);
}
if (actionTwo != null)
{
currentPlayer.cardsSetAside.RemoveCard(actionTwo);
currentPlayer.DoPlayAction(actionTwo, gameState);
}
gameState.gameLog.PopScope();
}
示例3: DoSpecializedAction
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
{
Card revealedCard = currentPlayer.DrawAndRevealOneCardFromDeck(gameState);
if (revealedCard == null)
return;
if (revealedCard.isAction)
{
currentPlayer.cardsBeingRevealed.RemoveCard(revealedCard);
currentPlayer.DoPlayAction(revealedCard, gameState);
}
else
{
currentPlayer.MoveRevealedCardToTopOfDeck();
}
}
示例4: DoSpecializedAction
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
{
Card cardToPlay = currentPlayer.RequestPlayerChooseCardToRemoveFromHandForPlay(gameState, acceptableCard => acceptableCard.isAction, isTreasure: false, isAction: true, isOptional: true);
if (cardToPlay != null)
{
currentPlayer.DoPlayAction(cardToPlay, gameState, countTimes: 2);
currentPlayer.MoveCardFromPlayedAreaToTrash(cardToPlay, gameState);
currentPlayer.RequestPlayerGainCardFromSupply(gameState,
acceptableCard =>
acceptableCard.CurrentCoinCost(currentPlayer) == cardToPlay.CurrentCoinCost(currentPlayer) + 1 &&
acceptableCard.potionCost == cardToPlay.potionCost &&
acceptableCard.isAction,
"must gain an action card costing exactly one more than the trashed card");
}
}