public GameState PlayKnight(Player player)
{
var playable = GetPlayableDevelopmentCards(player);
if (!playable.Contains(DevelopmentCard.Knight))
throw new InsufficientResourcesException("No knight found in hand");
player.DevelopmentCards.Remove(DevelopmentCard.Knight);
player.PlayedKnights++;
if (player.PlayedKnights > largestArmySize)
{
largestArmySize = player.PlayedKnights;
largestArmyId = player.Id;
}
MoveRobber(player, CurrentGamestate());
Log(new PlayKnightLogEvent(player.Id));
return CurrentGamestate();
}