public void MakeTurnFor(Player player, CoinFlipResult coin) { var playerCards = GetOrderedPlayerCards(player); if (coin == CoinFlipResult.Tail) { if (TryWorkWithCards(playerCards)) { return; } if (TryCreateNewCardFor(player)) { return; } var allCards = GetOrderedCards(); TryWorkWithCards(allCards); return; } var card = playerCards.FirstOrDefault(x => x.State == CardState.Available); if (card != null) { BlockCard(card); } TryCreateNewCardFor(player); }
/// <summary> /// /// </summary> /// <param name="callingTeam"></param> /// <param name="nonCallingTeam"></param> /// <param name="call"></param> /// <returns></returns> public CoinFlipWinner DeterminePossession(GameAnnouncer announcer, Team callingTeam, Team nonCallingTeam, CoinFlipResult call) { CoinFlipWinner winner = new CoinFlipWinner() { Winner = callingTeam, Loser = nonCallingTeam }; if (Flip() != call) { winner.Winner = nonCallingTeam; winner.Loser = callingTeam; } announcer.ReportGameEvent(String.Format("{0}: '{1} have won the coin flip.'", announcer.Name, winner.Winner)); return(winner); }