public List <Card> DealTo(IPlayer player, ref int count, Deck <Card> deck, Func <List <Card>, HandStatus> getStatus) { if (count == 0) { return(player.Hand); } else { var card = deck.OneFromTop(); player.Hand.Add(card); player.Status = getStatus(player.Hand); CardDealt?.Invoke(this, new CardDealtEventArgs(player.Id, card, player.Hand.Count - 1)); count -= 1; return(DealTo(player, ref count, deck, getStatus)); } }
protected virtual void OnCardDealt(CardDealtEventArgs e) { CardDealt?.Invoke(this, e); }