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