diff --git a/Userland/Games/Hearts/Game.cpp b/Userland/Games/Hearts/Game.cpp index d17fa9097b..2b661630dd 100644 --- a/Userland/Games/Hearts/Game.cpp +++ b/Userland/Games/Hearts/Game.cpp @@ -210,7 +210,10 @@ size_t Game::pick_card(Player& player) auto prefer_card = [this, &player](Card& card) { return !other_player_has_lower_value_card(player, card) && other_player_has_higher_value_card(player, card); }; - return player.pick_lead_card(move(valid_card), move(prefer_card)); + auto lower_value_card_in_play = [this, &player](Card& card) { + return other_player_has_lower_value_card(player, card); + }; + return player.pick_lead_card(move(valid_card), move(prefer_card), move(lower_value_card_in_play)); } } auto* high_card = &m_trick[0]; diff --git a/Userland/Games/Hearts/Player.cpp b/Userland/Games/Hearts/Player.cpp index 4e3bd7839f..c36ee8e3cf 100644 --- a/Userland/Games/Hearts/Player.cpp +++ b/Userland/Games/Hearts/Player.cpp @@ -11,7 +11,8 @@ namespace Hearts { -size_t Player::pick_lead_card(Function valid_play, Function prefer_card) +size_t Player::pick_lead_card(Function valid_play, Function prefer_card, + Function lower_value_card_in_play) { struct CardWithIndex { RefPtr card; @@ -38,17 +39,27 @@ size_t Player::pick_lead_card(Function valid_play, Function Player::pick_low_points_high_value_card(Optional type) diff --git a/Userland/Games/Hearts/Player.h b/Userland/Games/Hearts/Player.h index d7737951fe..6f143f34a9 100644 --- a/Userland/Games/Hearts/Player.h +++ b/Userland/Games/Hearts/Player.h @@ -21,7 +21,7 @@ public: { } - size_t pick_lead_card(Function, Function); + size_t pick_lead_card(Function, Function, Function); Optional pick_low_points_high_value_card(Optional type = {}); Optional pick_lower_value_card(Card& other_card); Optional pick_slightly_higher_value_card(Card& other_card);