Cockatrice 2026-06-27-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player_actions.h
Go to the documentation of this file.
1
7
8#ifndef COCKATRICE_PLAYER_ACTIONS_H
9#define COCKATRICE_PLAYER_ACTIONS_H
10
16#include "player_logic.h"
17
18#include <QMenu>
19#include <QObject>
22
23namespace google
24{
25namespace protobuf
26{
27class Message;
28}
29} // namespace google
30
31class Command_MoveCard;
32class GameEventContext;
33class PendingCommand;
34class PlayerLogic;
35class PlayerActions : public QObject
36{
37 Q_OBJECT
38
39public:
44
46
48 void sendGameCommand(const google::protobuf::Message &command);
49
50 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
51 PendingCommand *prepareGameCommand(const QList<const ::google::protobuf::Message *> &cmdList);
52
53 void moveOneCardUntil(CardItem *card);
55
56 [[nodiscard]] bool isMovingCardsUntil() const
57 {
58 return movingCardsUntil;
59 }
60
61signals:
66 void requestMulliganDialog(int startSize, int handSize, int deckSize);
69 int maxCards,
70 const QString &targetZone,
71 const QString &zoneDisplayName,
72 bool faceDown);
75 int maxCards,
76 const QString &targetZone,
77 const QString &zoneDisplayName,
78 bool faceDown);
81 void requestCreateTokenDialog(const QStringList &predefinedTokens);
82 void requestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation);
84 void requestSetPTDialog(const QString &oldPT);
85 void requestSetAnnotationDialog(const QString &oldAnnotation);
86 void requestSetCardCounterDialog(int counterId, const QString &oldValueForDlg);
87 void requestZoneViewToggle(const QString &zoneName, int numberCards, bool isReversed = false);
88 void requestSortHand(const QList<CardList::SortOption> &options);
89 void requestEnableAndSetCreateAnotherTokenAction(const QString &lastTokenName);
91
92public slots:
93 void setLastToken(CardInfoPtr cardInfo);
94 void setLastTokenInfo(CardInfoPtr cardInfo);
95 void playCard(CardItem *c, bool faceDown);
96 void playCardToTable(const CardItem *c, bool faceDown);
97
98 void actUntapAll();
100 void actRollDie(int sides, int count);
101 void actFlipCoin();
102 void actRequestCreateTokenDialog(const QStringList &predefinedTokens);
103 void actCreateToken(TokenInfo tokenToCreate);
105 void actRequestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation);
106 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation, int variableCount);
107 void onRelatedCardCreated(const CardItem *sourceCard, const CardRelation *cardRelation);
109 {
111 }
112 void actShuffle();
114 void actShuffleTop(int number);
116 void actShuffleBottom(int number);
117 void actDrawCard();
119 void actDrawCards(int number);
120 void actUndoDraw();
122 void actMulligan(int number);
123 void actMulliganSameSize();
124 void actMulliganMinusOne();
125 void doMulligan(int number);
126
127 void actPlay(QList<CardItem *> selectedCards);
128 void actPlayFacedown(QList<CardItem *> selectedCards);
129 void actHide(QList<CardItem *> selectedCards);
130
140 void moveTopCardsUntil(const QString &expr, MoveTopCardsUntilOptions options);
142 void actRequestMoveTopCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
143 void moveTopCardsTo(int number, const QString &targetZone, bool faceDown);
144 void actDrawBottomCard();
146 void actDrawBottomCards(int number);
156 void actRequestMoveBottomCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
157 void moveBottomCardsTo(int number, const QString &targetZone, bool faceDown);
158
159 void actSelectAll();
160 void actSelectRow();
161 void actSelectColumn();
162
163 void actViewLibrary();
164 void actViewHand();
166 void actViewTopCards(int number);
168 void actViewBottomCards(int number);
169 void actAlwaysRevealTopCard(bool alwaysRevealTopCard);
170 void actAlwaysLookAtTopCard(bool alwaysRevealTopCard);
171 void actViewGraveyard();
172 void actLendLibrary(int lendToPlayerId);
173 void actRevealTopCards(int revealToPlayerId, int amount);
174 void actRevealRandomGraveyardCard(int revealToPlayerId);
175 void actViewRfg();
176 void actViewSideboard();
177
178 void actSayMessage();
179
184
186 void actMoveCardXCardsFromTop(QList<CardItem *> selectedCards, int number);
187 void actRemoveCardCounter(QList<CardItem *> selectedCards, int counterId);
188 void actAddCardCounter(QList<CardItem *> selectedCards, int counterId);
189 void actRequestSetCardCounterDialog(QList<CardItem *> selectedCards, int counterId);
190 void actSetCardCounter(QList<CardItem *> selectedCards, int counterId, const QString &counterValue);
191 void actIncrementAllCardCounters(QList<CardItem *> cardsToUpdate);
192 void actAttach();
193 void actUnattach(QList<CardItem *> selectedCards);
194 void actDrawArrow();
195 void actIncPT(QList<CardItem *> selectedCards, int deltaP, int deltaT);
196 void actResetPT(QList<CardItem *> selectedCards);
197 void actRequestSetPTDialog(QList<CardItem *> selectedCards);
198 void actSetPT(QList<CardItem *> selectedCards, const QString &pt);
199 void actIncP(QList<CardItem *> selectedCards);
200 void actDecP(QList<CardItem *> selectedCards);
201 void actIncT(QList<CardItem *> selectedCards);
202 void actDecT(QList<CardItem *> selectedCards);
203 void actIncPT(QList<CardItem *> selectedCards);
204 void actDecPT(QList<CardItem *> selectedCards);
205 void actFlowP(QList<CardItem *> selectedCards);
206 void actFlowT(QList<CardItem *> selectedCards);
207
208 void actReduceLifeByPower(QList<CardItem *> selectedCards);
209
210 void actRequestSetAnnotationDialog(QList<CardItem *> selectedCards);
211 void actSetAnnotation(QList<CardItem *> selectedCards, const QString &annotation);
212 void actReveal(QList<CardItem *> selectedCards, QAction *action);
213 void actRevealHand(int revealToPlayerId);
214 void actRevealRandomHandCard(int revealToPlayerId);
215 void actRevealLibrary(int revealToPlayerId);
216
217 void actSortHand();
218
219 void cardMenuAction(QList<CardItem *> selectedCards, CardMenuActionType type);
220
221private:
223
228
231
237
239
240 void createCard(const CardItem *sourceCard,
241 const QString &dbCardName,
243 bool persistent = false);
244
245 void playSelectedCards(QList<CardItem *> selectedCards, bool faceDown = false);
246
247 void cmdSetTopCard(Command_MoveCard &cmd);
248 void cmdSetBottomCard(Command_MoveCard &cmd);
249
250 void offsetCardCounter(QList<CardItem *> selectedCards, int counterId, int offset);
251};
252
253#endif // COCKATRICE_PLAYER_ACTIONS_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
CardMenuActionType
Definition card_menu_action_type.h:11
Definition card_item.h:28
Represents a relationship between two cards.
Definition card_relation.h:24
Definition filter_string.h:34
Definition pending_command.h:15
void actFlipCoin()
Definition player_actions.cpp:865
void actRequestViewBottomCardsDialog()
Definition player_actions.cpp:187
void actRevealLibrary(int revealToPlayerId)
Definition player_actions.cpp:1703
void requestEnableAndSetCreateAnotherTokenAction(const QString &lastTokenName)
void requestViewTopCardsDialog(int defaultNumberTopCards, int deckSize)
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:506
void requestDrawBottomCardsDialog(int defaultNumberBottomCards, int maxCards)
void actRequestShuffleBottomDialog()
Definition player_actions.cpp:272
void doMulligan(int number)
Definition player_actions.cpp:344
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1714
void actResetPT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1288
void actAlwaysRevealTopCard(bool alwaysRevealTopCard)
Definition player_actions.cpp:198
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:917
void actCreatePredefinedToken()
Definition player_actions.cpp:945
void actDrawBottomCards(int number)
Definition player_actions.cpp:778
void actDecPT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1411
void requestSortHand(const QList< CardList::SortOption > &options)
void actIncPT(QList< CardItem * > selectedCards, int deltaP, int deltaT)
Definition player_actions.cpp:1255
void actDrawBottomCard()
Definition player_actions.cpp:753
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:2006
void moveBottomCardsTo(int number, const QString &targetZone, bool faceDown)
Definition player_actions.cpp:653
void actReduceLifeByPower(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1426
void actAttach()
Definition player_actions.cpp:1487
void actSortHand()
Definition player_actions.cpp:164
void actUndoDraw()
Definition player_actions.cpp:370
void actRequestDrawCardsDialog()
Definition player_actions.cpp:355
void createCard(const CardItem *sourceCard, const QString &dbCardName, CardRelationType attach=CardRelationType::DoesNotAttach, bool persistent=false)
Definition player_actions.cpp:1137
void actRequestViewTopCardsDialog()
Definition player_actions.cpp:176
void actMoveTopCardToExile()
Definition player_actions.cpp:408
void actRequestMoveBottomCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:641
QTimer * moveTopCardTimer
Definition player_actions.h:233
void actMoveBottomCardToTop()
Definition player_actions.cpp:683
CardsToReveal
Definition player_actions.h:41
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:42
bool isMovingCardsUntil() const
Definition player_actions.h:56
void actMulliganSameSize()
Definition player_actions.cpp:331
void actMoveCardXCardsFromTop(QList< CardItem * > selectedCards, int number)
Definition player_actions.cpp:1221
void actAlwaysLookAtTopCard(bool alwaysRevealTopCard)
Definition player_actions.cpp:207
void actMoveBottomCardsToExileFaceDown()
Definition player_actions.cpp:636
void requestMulliganDialog(int startSize, int handSize, int deckSize)
void actMoveTopCardToPlay()
Definition player_actions.cpp:557
PlayerLogic * player
Definition player_actions.h:222
void moveTopCardsUntil(const QString &expr, MoveTopCardsUntilOptions options)
Definition player_actions.cpp:492
void actRollDie(int sides, int count)
Definition player_actions.cpp:857
void actIncT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1396
void playSelectedCards(QList< CardItem * > selectedCards, bool faceDown=false)
Definition player_actions.cpp:1626
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:225
void requestSetCardCounterDialog(int counterId, const QString &oldValueForDlg)
void requestSetLastToken(CardInfoPtr lastToken)
void actRequestDrawBottomCardsDialog()
Definition player_actions.cpp:768
void actRequestMulliganDialog()
Definition player_actions.cpp:310
void actRequestSetCardCounterDialog(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1546
void setLastRelatedCreationSucceeded(bool succeeded)
Definition player_actions.h:108
void setLastTokenInfo(CardInfoPtr cardInfo)
Definition player_actions.cpp:926
void requestSetPTDialog(const QString &oldPT)
void actMoveBottomCardToPlay()
Definition player_actions.cpp:804
void actHide(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1651
void actMoveTopCardsToExileFaceDown()
Definition player_actions.cpp:438
void cardMenuAction(QList< CardItem * > selectedCards, CardMenuActionType type)
Definition player_actions.cpp:1752
void actUnattach(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1497
void requestRollDieDialog()
void actIncrementAllCardCounters(QList< CardItem * > cardsToUpdate)
Definition player_actions.cpp:1579
void actRequestSetAnnotationDialog(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1461
void actShuffle()
Definition player_actions.cpp:236
void actMoveTopCardToBottom()
Definition player_actions.cpp:542
void actDrawCards(int number)
Definition player_actions.cpp:362
void actRemoveCardCounter(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1518
void requestZoneViewToggle(const QString &zoneName, int numberCards, bool isReversed=false)
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:48
void actFlowP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1416
void actCreateAnotherToken()
Definition player_actions.cpp:896
void actMoveTopCardsToGraveFaceDown()
Definition player_actions.cpp:428
void actMulligan(int number)
Definition player_actions.cpp:319
void actSetAnnotation(QList< CardItem * > selectedCards, const QString &annotation)
Definition player_actions.cpp:1473
void actViewBottomCards(int number)
Definition player_actions.cpp:192
void actViewRfg()
Definition player_actions.cpp:226
void requestDrawCardsDialog(int defaultNumberTopCards, int deckSize)
void actSetPT(QList< CardItem * > selectedCards, const QString &pt)
Definition player_actions.cpp:1334
void actRequestMoveCardXCardsFromTopDialog()
Definition player_actions.cpp:1214
void actDrawCard()
Definition player_actions.cpp:303
void actRequestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1060
void actDecT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1401
void actShuffleBottom(int number)
Definition player_actions.cpp:282
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:621
void actShuffleTop(int number)
Definition player_actions.cpp:251
int lastTokenTableRow
Definition player_actions.h:230
void requestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation)
void requestShuffleTopDialog(int defaultNumberTopCards, int maxCards)
void requestSetAnnotationDialog(const QString &oldAnnotation)
void cmdSetBottomCard(Command_MoveCard &cmd)
Definition player_actions.cpp:383
int defaultNumberTopCards
Definition player_actions.h:224
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1691
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation, int variableCount)
Definition player_actions.cpp:1066
void actAddCardCounter(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1513
void actDecP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1391
void actFlowT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1421
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:572
void moveTopCardsTo(int number, const QString &targetZone, bool faceDown)
Definition player_actions.cpp:455
void actSayMessage()
Definition player_actions.cpp:1206
int defaultNumberBottomCards
Definition player_actions.h:226
void actViewLibrary()
Definition player_actions.cpp:134
void actCreateAllRelatedCards()
Definition player_actions.cpp:974
MoveTopCardsUntilOptions movingCardsUntilOptions
Definition player_actions.h:236
void actSelectRow()
Definition player_actions.cpp:729
int defaultNumberDieRoll
Definition player_actions.h:227
void requestShuffleBottomDialog(int defaultNumberBottomCards, int maxCards)
void actViewTopCards(int number)
Definition player_actions.cpp:181
void requestMoveTopCardsToDialog(int defaultNumberTopCards, int maxCards, const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
void actUntapAll()
Definition player_actions.cpp:842
TokenInfo lastTokenInfo
Definition player_actions.h:229
void actMoveTopCardToGrave()
Definition player_actions.cpp:393
void actCreateToken(TokenInfo tokenToCreate)
Definition player_actions.cpp:878
void actViewGraveyard()
Definition player_actions.cpp:221
bool lastRelatedCreationSucceeded
Definition player_actions.h:238
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:216
void actMoveBottomCardToExile()
Definition player_actions.cpp:606
void actRequestRollDieDialog()
Definition player_actions.cpp:852
FilterString movingCardsUntilFilter
Definition player_actions.h:234
void actCreateRelatedCard()
Definition player_actions.cpp:958
int movingCardsUntilCounter
Definition player_actions.h:235
void actRequestCreateTokenDialog(const QStringList &predefinedTokens)
Definition player_actions.cpp:873
void actMoveTopCardsToExile()
Definition player_actions.cpp:433
void actRequestMoveTopCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:443
void actSelectColumn()
Definition player_actions.cpp:742
void playCardToTable(const CardItem *c, bool faceDown)
Definition player_actions.cpp:101
void actPlayFacedown(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1646
void cmdSetTopCard(Command_MoveCard &cmd)
Definition player_actions.cpp:375
void requestViewBottomCardsDialog(int defaultNumberBottomCards, int deckSize)
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1741
void requestMoveTopCardsUntilDialog(MoveTopCardsUntilOptions options)
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:819
void actSetCardCounter(QList< CardItem * > selectedCards, int counterId, const QString &counterValue)
Definition player_actions.cpp:1558
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
void actViewHand()
Definition player_actions.cpp:139
void actRequestSetPTDialog(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1321
void actRequestShuffleTopDialog()
Definition player_actions.cpp:241
bool movingCardsUntil
Definition player_actions.h:232
void actMulliganMinusOne()
Definition player_actions.cpp:337
void onRelatedCardCreated(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1117
void actViewSideboard()
Definition player_actions.cpp:231
void actDrawArrow()
Definition player_actions.cpp:1378
void requestCreateTokenDialog(const QStringList &predefinedTokens)
void requestMoveBottomCardsToDialog(int defaultNumberBottomCards, int maxCards, const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
void actMoveTopCardsToGrave()
Definition player_actions.cpp:423
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1726
void actMoveBottomCardsToExile()
Definition player_actions.cpp:631
void offsetCardCounter(QList< CardItem * > selectedCards, int counterId, int offset)
Definition player_actions.cpp:1523
void actMoveBottomCardToGrave()
Definition player_actions.cpp:591
void actReveal(QList< CardItem * > selectedCards, QAction *action)
Definition player_actions.cpp:1661
void actPlay(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1641
void actMoveBottomCardsToGraveFaceDown()
Definition player_actions.cpp:626
void actRequestMoveTopCardsUntilDialog()
Definition player_actions.cpp:485
void actSelectAll()
Definition player_actions.cpp:719
void actIncP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1386
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:535
PlayerActions(PlayerLogic *player)
Definition player_actions.cpp:37
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1680
void requestMoveCardXCardsFromTopDialog(int defaultNumberTopCardsToPlaceBelow, int deckSize)
Definition player_logic.h:64
static constexpr int amount
Definition deck_hash_performance_test.cpp:5
CardRelationType
Types of attachments between cards.
Definition card_relation_type.h:16
@ DoesNotAttach
Definition card_relation_type.h:17
Definition player_actions.h:26
Definition player_actions.h:24
Definition dlg_move_top_cards_until.h:20
Definition dlg_create_token.h:26