public void PlayPrepareRound() { DoActionForAllPlayersInOrder((player) => { var availablePlayerOptions = new List <CardActions>() { CardActions.EquiptCardFromBackpack, CardActions.UnequipCard, CardActions.DoNothing }; var cardAction = player.PerformCardAction(GameplayEvent.PreparePhase, availablePlayerOptions, this); switch (cardAction.Item1) { case CardActions.EquiptCardFromBackpack: var playerSelectedACard = cardAction.Item2 != null; if (playerSelectedACard) { var cardFromBackpack = player.Backpack.RemoveFromBackpack(cardAction.Item2); if (cardFromBackpack != null) { EquipCardForPlayer(player, cardFromBackpack); } } break; case CardActions.UnequipCard: var playerSelectedACardToUnequipt = cardAction.Item2 != null; if (playerSelectedACardToUnequipt) { var unequiptCard = player.UnequiptCard(cardAction.Item2); if (unequiptCard != null) { DiscardDeck.AddToDeck(unequiptCard); } } break; } }); }