From add0e19c34b468dd710e078037fb5838cc277856 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sat, 8 Nov 2025 12:59:48 -0800 Subject: [PATCH] revert --- cockatrice/src/game/player/menu/hand_menu.cpp | 8 ++--- cockatrice/src/game/player/player_actions.cpp | 29 +++++++++++++++---- cockatrice/src/game/player/player_actions.h | 4 +-- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/cockatrice/src/game/player/menu/hand_menu.cpp b/cockatrice/src/game/player/menu/hand_menu.cpp index ddb5b6f2a..e8554499a 100644 --- a/cockatrice/src/game/player/menu/hand_menu.cpp +++ b/cockatrice/src/game/player/menu/hand_menu.cpp @@ -26,11 +26,9 @@ HandMenu::HandMenu(Player *_player, PlayerActions *actions, QWidget *parent) : T aSortHandByManaValue = new QAction(this); aSortHandByManaValue->setData(CardList::SortByManaValue); - connect(aSortHandByType, &QAction::triggered, actions, [actions] { actions->actSortHand({}); }); - connect(aSortHandByName, &QAction::triggered, actions, - [actions] { actions->actSortHand({CardList::SortByMainType, CardList::SortByManaValue}); }); - connect(aSortHandByManaValue, &QAction::triggered, actions, - [actions] { actions->actSortHand({CardList::SortByManaValue, CardList::SortByColors}); }); + connect(aSortHandByType, &QAction::triggered, actions, &PlayerActions::actSortHand); + connect(aSortHandByName, &QAction::triggered, actions, &PlayerActions::actSortHand); + connect(aSortHandByManaValue, &QAction::triggered, actions, &PlayerActions::actSortHand); mSortHand->addAction(aSortHandByName); mSortHand->addAction(aSortHandByType); diff --git a/cockatrice/src/game/player/player_actions.cpp b/cockatrice/src/game/player/player_actions.cpp index 1a14bff1a..388a88e01 100644 --- a/cockatrice/src/game/player/player_actions.cpp +++ b/cockatrice/src/game/player/player_actions.cpp @@ -140,13 +140,32 @@ void PlayerActions::actViewHand() } /** - * @brief Sorts the cards in the hand using the given sort options. - * Appends SortByName and SortByPrinting to the end of the list, so that names and printings are grouped together. - * - * @param sortOptions The non-default options to sort the cards by. + * @brief The sortHand actions only pass along a single SortOption in its data. + * This method fills out the rest of the sort priority list given that option. + * @param option The single sort option + * @return The sort priority list */ -void PlayerActions::actSortHand(const QList &sortOptions) +static QList expandSortOption(CardList::SortOption option) { + switch (option) { + case CardList::SortByName: + return {}; + case CardList::SortByMainType: + return {CardList::SortByMainType, CardList::SortByManaValue}; + case CardList::SortByManaValue: + return {CardList::SortByManaValue, CardList::SortByColors}; + default: + return {}; + } +} + +void PlayerActions::actSortHand() +{ + auto *action = qobject_cast(sender()); + CardList::SortOption option = static_cast(action->data().toInt()); + + QList sortOptions = expandSortOption(option); + static QList defaultOptions = {CardList::SortByName, CardList::SortByPrinting}; player->getGraphicsItem()->getHandZoneGraphicsItem()->sortHand(sortOptions + defaultOptions); diff --git a/cockatrice/src/game/player/player_actions.h b/cockatrice/src/game/player/player_actions.h index 6f46202f0..aba3726e8 100644 --- a/cockatrice/src/game/player/player_actions.h +++ b/cockatrice/src/game/player/player_actions.h @@ -7,8 +7,6 @@ #ifndef COCKATRICE_PLAYER_ACTIONS_H #define COCKATRICE_PLAYER_ACTIONS_H - -#include "../board/card_list.h" #include "event_processing_options.h" #include "player.h" @@ -154,7 +152,7 @@ public slots: void actRevealRandomHandCard(int revealToPlayerId); void actRevealLibrary(int revealToPlayerId); - void actSortHand(const QList &sortOptions); + void actSortHand(); void cardMenuAction();