class LoveLetterApplication::Validator::PlayCard::Soldier::Builder
Public Instance Methods
call(model)
click to toggle source
# File lib/love_letter_application/validator/play_card/soldier/builder.rb, line 16 def call(model) card_id = LoveLetterApplication::Actions::Soldier::id, legal_target_player_ids = get_legal_target_player_ids(model) if legal_target_player_ids.empty? no_options_validator else LoveLetterApplication::Validator::PlayCard::Soldier::new( legal_target_player_ids: legal_target_player_ids, legal_target_card_ids: get_legal_target_card_ids(model)) end end
Private Instance Methods
get_legal_target_card_ids(model)
click to toggle source
# File lib/love_letter_application/validator/play_card/soldier/builder.rb, line 37 def get_legal_target_card_ids(model) legal_target_cards = [model.set_aside_card] + model.draw_pile model.players.each{|p| legal_target_cards += p.played_cards + p.hand} legal_target_cards.select(&:targetable?) .map{|c| c.id.to_i} .uniq end
get_legal_target_player_ids(model)
click to toggle source
# File lib/love_letter_application/validator/play_card/soldier/builder.rb, line 29 def get_legal_target_player_ids(model) model.players .select(&:active?) # must not be an eliminated player .select(&:targetable?) # can't have immunity to targeting (e.g. with priestess) .reject{|p| p.id.to_i.eql?(model.current_player_id.to_i)} # can't target self .map{|p| p.id.to_i} end