class LoveLetterApplication::Results::ProcessRoundCompleteByDepletedDeck
Public Instance Methods
call(game_board:, change_orders:)
click to toggle source
# File lib/love_letter_application/results/process_round_complete_by_depleted_deck.rb, line 15 def call(game_board:, change_orders:) players_and_scores = get_players_and_scores(game_board) victorious_player_id = get_victorious_player_id(game_board, players_and_scores) game_board = round_complete.call( game_board: game_board, victorious_player_id: victorious_player_id) change_orders .push(get_players_and_scores_node.(players_and_scores: players_and_scores)) .push(get_player_victory_node.(player_id: victorious_player_id)) .push(get_result_game_board.(game_board: game_board)) end
Private Instance Methods
get_players_and_scores(game_board)
click to toggle source
# File lib/love_letter_application/results/process_round_complete_by_depleted_deck.rb, line 28 def get_players_and_scores(game_board) game_board.players .select(&:active?) .map{|player| [player.id, point_value_of(player)]} .to_h end
get_victorious_player_id(game_board, players_and_scores)
click to toggle source
# File lib/love_letter_application/results/process_round_complete_by_depleted_deck.rb, line 41 def get_victorious_player_id(game_board, players_and_scores) winning_score = players_and_scores.to_a.map(&:last).max players_and_scores.map{|k, v| v.eql?(winning_score)} .map(&:id) .map(&:to_i) end
point_value_of(player)
click to toggle source
# File lib/love_letter_application/results/process_round_complete_by_depleted_deck.rb, line 35 def point_value_of(player) hand_card_value = hand_card.reduce{|c,d| c.rank.to_i + d.rank.to_i} * 100 played_cards_value = player.played_cards.reduce{|c, d| c.rank.to_i + d.rank.to_i} hand_card_value + played_cards_value end