Class: Tundengine::Dealer

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/tundengine/dealer.rb

Instance Method Summary collapse

Instance Method Details

#deal!(players, trump_suit, options = {}) ⇒ Object



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