class LoveLetterApplication::Results::EliminatePlayer

Public Instance Methods

call(target_player_id:, game_board:, change_orders:) click to toggle source
# File lib/love_letter_application/results/eliminate_player.rb, line 14
def call(target_player_id:, game_board:, change_orders:)
  change_orders = change_orders
    .push(get_eliminated_player_node.(player_id: target_player_id))
  game_board = eliminate_player_from_game_board.(
    game_board: game_board,
    player_id: target_player_id)
  if one_player_remaining?(game_board)
    process_round_complete_by_elimination.(
      game_board: game_board,
      change_orders: change_orders,
      player: game_board
        .players
        .find(&:active?))
  else
    process_next_player_turn.(game_board: game_board, change_orders: change_orders)
  end
end

Private Instance Methods

one_player_remaining?(game_board) click to toggle source
# File lib/love_letter_application/results/eliminate_player.rb, line 33
def one_player_remaining?(game_board)
  game_board
    .players
    .select(&:active?)
    .length
    .eql?(1)
end