class LoveLetterApplication::Results::ProcessNextTurnOptions

Public Instance Methods

call(game_board:, change_orders:) click to toggle source
# File lib/love_letter_application/results/process_next_turn_options.rb, line 15
def call(game_board:, change_orders:)
  current_player_id = game_board.current_player_id.to_i
  hand = game_board.players
    .find{|player| player.id.to_i.eql?(current_player_id)}
    .hand
  card_ids = get_legal_card_ids.(card_list: hand)
  card_ids.each do |card_id|
    change_orders = change_orders.push(get_node_for(game_board, card_id))
  end
  change_orders
end
get_node_for(game_board, card_id) click to toggle source
# File lib/love_letter_application/results/process_next_turn_options.rb, line 27
def get_node_for(game_board, card_id)
  build_validator = all_card_validator_builders[card_id]
  validator = build_validator.(game_board)
  # a handler will be called by validator#accept based on the type of the validator found
  validator.accept(self, card_id: card_id)
end
handle_no_options_validator(validator, card_id:) click to toggle source
# File lib/love_letter_application/results/process_next_turn_options.rb, line 34
def handle_no_options_validator(validator, card_id:)
  get_play_card_with_no_options_node.(card_id: card_id)
end
handle_select_player_id_validator(validator, card_id:) click to toggle source
# File lib/love_letter_application/results/process_next_turn_options.rb, line 38
def handle_select_player_id_validator(validator, card_id:)
  get_play_card_with_player_id_option_node.(
    card_id: card_id,
    player_id_list: validator.legal_target_player_ids)
end
handle_soldier_validator(validator, card_id:) click to toggle source
# File lib/love_letter_application/results/process_next_turn_options.rb, line 44
def handle_soldier_validator(validator, card_id:)
  get_play_card_with_player_id_and_card_id_option_node.(
    card_id: card_id,
    player_id_list: validator.legal_target_player_ids,
    card_id_list: validator.legal_target_card_ids)
end