6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/tundengine/dealer.rb', line 6
def deal!(players, trump_suit, options = {})
default_options = {
premade_hands: Hash.new([])
}
options = default_options.merge(options)
premade_hands = options.fetch :premade_hands
validate_premade_hands(premade_hands)
premade_players_names = premade_hands.keys.map(&:name)
premade_players, other_players = players.partition do |p|
premade_players_names.include? p.name
end
premade_players.each do |p|
premade_hands[p].each { |c| p.take_card! c }
end
premade_cards = premade_hands.values.flatten(1)
all_cards = Deck.for(players.length, trump_suit).shuffle
do_deal!(other_players, all_cards - premade_cards)
end
|