class LoveLetterApplication::Models::Effects::PlayCard
Public Instance Methods
call(game_board:, card_id:)
click to toggle source
# File lib/love_letter_application/models/effects/play_card.rb, line 10 def call(game_board:, card_id:) player_id = game_board.current_player_id.to_i player_replacement = get_replacement(game_board.players, player_id, card_id) players = game_board .players .reject{|player| player.id.to_i.eql?(player_id.to_i)} .push(player_replacement) LoveLetterApplication::Models::GameBoard::new( players: players, draw_pile: game_board.draw_pile, set_aside_card: game_board.set_aside_card, current_player_id: game_board.current_player_id, game_state: game_board.game_state) end
Private Instance Methods
get_replacement(players, player_id, card_id)
click to toggle source
# File lib/love_letter_application/models/effects/play_card.rb, line 28 def get_replacement(players, player_id, card_id) modified_player = players .find{|player| player.id.to_i.eql?(player_id.to_i)} played_card = modified_player.hand.find{|card| card.id.to_i.eql?(card_id.to_i)} new_hand = modified_player.hand.map(&:itself) new_hand.slice!(new_hand.index{|card| card.id.to_i.eql?(card_id.to_i)}).freeze new_played_cards = ([played_card] + modified_player.played_cards.map(&:itself)).freeze LoveLetterApplication::Models::Player::new( id: modified_player.id.to_i, seat: modified_player.id.to_i, played_cards: new_played_cards, hand: new_hand, active?: modified_player.active?, targetable?: modified_player.targetable?) end