Cockatrice 2026-10-19-Development-3.1.2-beta.2
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
11#include "../../game_graphics/board/card_item.h" // IWYU pragma: keep - moc instantiates the metatype for QList<CardItem *>, which Qt 6.4 needs complete
15#include "../board/card_list.h"
17
18#include <QObject>
19#include <QString>
20#include <QStringList>
23#include <qtmetamacros.h>
24
25class CardItem;
26class CardRelation;
27class QAction;
28class QTimer;
29template <typename T> class QList;
30
31namespace google
32{
33namespace protobuf
34{
35class Message;
36}
37} // namespace google
38
40class PendingCommand;
41class PlayerLogic;
42
43class PlayerActions : public QObject
44{
45 Q_OBJECT
46
47public:
52
54
56 void sendGameCommand(const google::protobuf::Message &command);
57
58 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
60
61 void moveOneCardUntil(CardItem *card);
63
64 [[nodiscard]] bool isMovingCardsUntil() const
65 {
66 return movingCardsUntil;
67 }
68
69signals:
74 void requestMulliganDialog(int startSize, int handSize, int deckSize);
77 int maxCards,
78 const QString &targetZone,
79 const QString &zoneDisplayName,
80 bool faceDown);
83 int maxCards,
84 const QString &targetZone,
85 const QString &zoneDisplayName,
86 bool faceDown);
89 void requestCreateTokenDialog(const QStringList &predefinedTokens);
90 void requestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation);
92 void requestSetPTDialog(const QString &oldPT);
93 void requestSetAnnotationDialog(const QString &oldAnnotation);
94 void requestSetCardCounterDialog(int counterId, const QString &oldValueForDlg);
95 void requestZoneViewToggle(const QString &zoneName, int numberCards, bool isReversed = false);
97 void requestEnableAndSetCreateAnotherTokenAction(const QString &lastTokenName);
99
100public slots:
101 void setLastToken(CardInfoPtr cardInfo);
102 void setLastTokenInfo(CardInfoPtr cardInfo);
103 void playCard(CardItem *c, bool faceDown);
104 void playCardToTable(const CardItem *c, bool faceDown);
105
106 void actUntapAll();
108 void actRollDie(int sides, int count);
109 void actFlipCoin();
110 void actRequestCreateTokenDialog(const QStringList &predefinedTokens);
111 void actCreateToken(TokenInfo tokenToCreate);
113 void actRequestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation);
114 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation, int variableCount);
115 void onRelatedCardCreated(const CardItem *sourceCard, const CardRelation *cardRelation);
117 {
119 }
120 void actShuffle();
122 void actShuffleTop(int number);
124 void actShuffleBottom(int number);
125 void actDrawCard();
127 void actDrawCards(int number);
128 void actUndoDraw();
130 void actMulligan(int number);
131 void actMulliganSameSize();
132 void actMulliganMinusOne();
133 void doMulligan(int number);
134
135 void actPlay(QList<CardItem *> selectedCards);
136 void actPlayFacedown(QList<CardItem *> selectedCards);
137 void actHide(QList<CardItem *> selectedCards);
138
148 void moveTopCardsUntil(const QString &expr, MoveTopCardsUntilOptions options);
150 void actRequestMoveTopCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
151 void moveTopCardsTo(int number, const QString &targetZone, bool faceDown);
152 void actDrawBottomCard();
154 void actDrawBottomCards(int number);
164 void actRequestMoveBottomCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
165 void moveBottomCardsTo(int number, const QString &targetZone, bool faceDown);
166
167 void actSelectAll();
168 void actSelectRow();
169 void actSelectColumn();
170
171 void actViewLibrary();
172 void actViewHand();
174 void actViewTopCards(int number);
176 void actViewBottomCards(int number);
177 void actAlwaysRevealTopCard(bool alwaysRevealTopCard);
178 void actAlwaysLookAtTopCard(bool alwaysRevealTopCard);
179 void actViewGraveyard();
180 void actLendLibrary(int lendToPlayerId);
181 void actRevealTopCards(int revealToPlayerId, int amount);
182 void actRevealRandomGraveyardCard(int revealToPlayerId);
183 void actViewRfg();
184 void actViewSideboard();
185
186 void actSayMessage();
187
192
194 void actMoveCardXCardsFromTop(QList<CardItem *> selectedCards, int number);
195 void actRemoveCardCounter(QList<CardItem *> selectedCards, int counterId);
196 void actAddCardCounter(QList<CardItem *> selectedCards, int counterId);
197 void actRequestSetCardCounterDialog(QList<CardItem *> selectedCards, int counterId);
198 void actSetCardCounter(QList<CardItem *> selectedCards, int counterId, const QString &counterValue);
200 void actAttach();
201 void actUnattach(QList<CardItem *> selectedCards);
202 void actDrawArrow();
203 void actIncPT(QList<CardItem *> selectedCards, int deltaP, int deltaT);
204 void actResetPT(QList<CardItem *> selectedCards);
205 void actRequestSetPTDialog(QList<CardItem *> selectedCards);
206 void actSetPT(QList<CardItem *> selectedCards, const QString &pt);
207 void actIncP(QList<CardItem *> selectedCards);
208 void actDecP(QList<CardItem *> selectedCards);
209 void actIncT(QList<CardItem *> selectedCards);
210 void actDecT(QList<CardItem *> selectedCards);
211 void actIncPT(QList<CardItem *> selectedCards);
212 void actDecPT(QList<CardItem *> selectedCards);
213 void actFlowP(QList<CardItem *> selectedCards);
214 void actFlowT(QList<CardItem *> selectedCards);
215
216 void actReduceLifeByPower(QList<CardItem *> selectedCards);
217
219 void actSetAnnotation(QList<CardItem *> selectedCards, const QString &annotation);
220 void actReveal(QList<CardItem *> selectedCards, QAction *action);
221 void actRevealHand(int revealToPlayerId);
222 void actRevealRandomHandCard(int revealToPlayerId);
223 void actRevealLibrary(int revealToPlayerId);
224
225 void actSortHand();
226
228
229private:
231
236
239
245
247
248 void createCard(const CardItem *sourceCard,
249 const QString &dbCardName,
251 bool persistent = false,
252 bool faceDown = false);
253
254 void playSelectedCards(QList<CardItem *> selectedCards, bool faceDown = false);
255
258
259 void offsetCardCounter(QList<CardItem *> selectedCards, int counterId, int offset);
260};
261
262#endif // COCKATRICE_PLAYER_ACTIONS_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
CardMenuActionType
Definition card_menu_action_type.h:11
Definition card_item.h:33
Represents a relationship between two cards.
Definition card_relation.h:25
Definition filter_string.h:35
Definition pending_command.h:20
void actFlipCoin()
Definition player_actions.cpp:911
void actRequestViewBottomCardsDialog()
Definition player_actions.cpp:233
void actRevealLibrary(int revealToPlayerId)
Definition player_actions.cpp:1753
void requestEnableAndSetCreateAnotherTokenAction(const QString &lastTokenName)
void requestViewTopCardsDialog(int defaultNumberTopCards, int deckSize)
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:552
void requestDrawBottomCardsDialog(int defaultNumberBottomCards, int maxCards)
void actRequestShuffleBottomDialog()
Definition player_actions.cpp:318
void doMulligan(int number)
Definition player_actions.cpp:390
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1764
void actResetPT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1339
void createCard(const CardItem *sourceCard, const QString &dbCardName, CardRelationType attach=CardRelationType::DoesNotAttach, bool persistent=false, bool faceDown=false)
Definition player_actions.cpp:1186
void actAlwaysRevealTopCard(bool alwaysRevealTopCard)
Definition player_actions.cpp:244
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:963
void actCreatePredefinedToken()
Definition player_actions.cpp:991
void actDrawBottomCards(int number)
Definition player_actions.cpp:824
void actDecPT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1458
void requestSortHand(const QList< CardList::SortOption > &options)
void actIncPT(QList< CardItem * > selectedCards, int deltaP, int deltaT)
Definition player_actions.cpp:1306
void actDrawBottomCard()
Definition player_actions.cpp:799
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:2056
void moveBottomCardsTo(int number, const QString &targetZone, bool faceDown)
Definition player_actions.cpp:699
void actReduceLifeByPower(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1473
void actAttach()
Definition player_actions.cpp:1534
void actSortHand()
Definition player_actions.cpp:210
void actUndoDraw()
Definition player_actions.cpp:416
void actRequestDrawCardsDialog()
Definition player_actions.cpp:401
void actRequestViewTopCardsDialog()
Definition player_actions.cpp:222
void actMoveTopCardToExile()
Definition player_actions.cpp:454
void actRequestMoveBottomCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:687
QTimer * moveTopCardTimer
Definition player_actions.h:241
void actMoveBottomCardToTop()
Definition player_actions.cpp:729
CardsToReveal
Definition player_actions.h:49
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:50
bool isMovingCardsUntil() const
Definition player_actions.h:64
void actMulliganSameSize()
Definition player_actions.cpp:377
void actMoveCardXCardsFromTop(QList< CardItem * > selectedCards, int number)
Definition player_actions.cpp:1272
void actAlwaysLookAtTopCard(bool alwaysRevealTopCard)
Definition player_actions.cpp:253
void actMoveBottomCardsToExileFaceDown()
Definition player_actions.cpp:682
void requestMulliganDialog(int startSize, int handSize, int deckSize)
void actMoveTopCardToPlay()
Definition player_actions.cpp:603
PlayerLogic * player
Definition player_actions.h:230
void moveTopCardsUntil(const QString &expr, MoveTopCardsUntilOptions options)
Definition player_actions.cpp:538
void actRollDie(int sides, int count)
Definition player_actions.cpp:903
void actIncT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1443
void playSelectedCards(QList< CardItem * > selectedCards, bool faceDown=false)
Definition player_actions.cpp:1676
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:233
void requestSetCardCounterDialog(int counterId, const QString &oldValueForDlg)
void requestSetLastToken(CardInfoPtr lastToken)
void actRequestDrawBottomCardsDialog()
Definition player_actions.cpp:814
void actRequestMulliganDialog()
Definition player_actions.cpp:356
void actRequestSetCardCounterDialog(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1596
void setLastRelatedCreationSucceeded(bool succeeded)
Definition player_actions.h:116
void setLastTokenInfo(CardInfoPtr cardInfo)
Definition player_actions.cpp:972
void requestSetPTDialog(const QString &oldPT)
void actMoveBottomCardToPlay()
Definition player_actions.cpp:850
void actHide(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1701
void actMoveTopCardsToExileFaceDown()
Definition player_actions.cpp:484
void cardMenuAction(QList< CardItem * > selectedCards, CardMenuActionType type)
Definition player_actions.cpp:1802
void actUnattach(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1544
void requestRollDieDialog()
void actIncrementAllCardCounters(QList< CardItem * > cardsToUpdate)
Definition player_actions.cpp:1629
void actRequestSetAnnotationDialog(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1508
void actShuffle()
Definition player_actions.cpp:282
void actMoveTopCardToBottom()
Definition player_actions.cpp:588
void actDrawCards(int number)
Definition player_actions.cpp:408
void actRemoveCardCounter(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1565
void requestZoneViewToggle(const QString &zoneName, int numberCards, bool isReversed=false)
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:94
void actFlowP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1463
void actCreateAnotherToken()
Definition player_actions.cpp:942
void actMoveTopCardsToGraveFaceDown()
Definition player_actions.cpp:474
void actMulligan(int number)
Definition player_actions.cpp:365
void actSetAnnotation(QList< CardItem * > selectedCards, const QString &annotation)
Definition player_actions.cpp:1520
void actViewBottomCards(int number)
Definition player_actions.cpp:238
void actViewRfg()
Definition player_actions.cpp:272
void requestDrawCardsDialog(int defaultNumberTopCards, int deckSize)
void actSetPT(QList< CardItem * > selectedCards, const QString &pt)
Definition player_actions.cpp:1385
void actRequestMoveCardXCardsFromTopDialog()
Definition player_actions.cpp:1265
void actDrawCard()
Definition player_actions.cpp:349
void actRequestCreateRelatedFromRelationDialog(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1108
void actDecT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1448
void actShuffleBottom(int number)
Definition player_actions.cpp:328
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:667
void actShuffleTop(int number)
Definition player_actions.cpp:297
int lastTokenTableRow
Definition player_actions.h:238
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:429
int defaultNumberTopCards
Definition player_actions.h:232
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1741
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation, int variableCount)
Definition player_actions.cpp:1114
void actAddCardCounter(QList< CardItem * > selectedCards, int counterId)
Definition player_actions.cpp:1560
void actDecP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1438
void actFlowT(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1468
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:618
void moveTopCardsTo(int number, const QString &targetZone, bool faceDown)
Definition player_actions.cpp:501
void actSayMessage()
Definition player_actions.cpp:1257
int defaultNumberBottomCards
Definition player_actions.h:234
void actViewLibrary()
Definition player_actions.cpp:180
void actCreateAllRelatedCards()
Definition player_actions.cpp:1020
MoveTopCardsUntilOptions movingCardsUntilOptions
Definition player_actions.h:244
void actSelectRow()
Definition player_actions.cpp:775
int defaultNumberDieRoll
Definition player_actions.h:235
void requestShuffleBottomDialog(int defaultNumberBottomCards, int maxCards)
void actViewTopCards(int number)
Definition player_actions.cpp:227
void requestMoveTopCardsToDialog(int defaultNumberTopCards, int maxCards, const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
void actUntapAll()
Definition player_actions.cpp:888
TokenInfo lastTokenInfo
Definition player_actions.h:237
void actMoveTopCardToGrave()
Definition player_actions.cpp:439
void actCreateToken(TokenInfo tokenToCreate)
Definition player_actions.cpp:924
void actViewGraveyard()
Definition player_actions.cpp:267
bool lastRelatedCreationSucceeded
Definition player_actions.h:246
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:262
void actMoveBottomCardToExile()
Definition player_actions.cpp:652
void actRequestRollDieDialog()
Definition player_actions.cpp:898
FilterString movingCardsUntilFilter
Definition player_actions.h:242
void actCreateRelatedCard()
Definition player_actions.cpp:1004
int movingCardsUntilCounter
Definition player_actions.h:243
void actRequestCreateTokenDialog(const QStringList &predefinedTokens)
Definition player_actions.cpp:919
void actMoveTopCardsToExile()
Definition player_actions.cpp:479
void actRequestMoveTopCardsToDialog(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:489
void actSelectColumn()
Definition player_actions.cpp:788
void playCardToTable(const CardItem *c, bool faceDown)
Definition player_actions.cpp:147
void actPlayFacedown(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1696
void cmdSetTopCard(Command_MoveCard &cmd)
Definition player_actions.cpp:421
void requestViewBottomCardsDialog(int defaultNumberBottomCards, int deckSize)
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1791
void requestMoveTopCardsUntilDialog(MoveTopCardsUntilOptions options)
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:865
void actSetCardCounter(QList< CardItem * > selectedCards, int counterId, const QString &counterValue)
Definition player_actions.cpp:1608
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
Definition player_actions.cpp:2011
void actViewHand()
Definition player_actions.cpp:185
void actRequestSetPTDialog(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1372
void actRequestShuffleTopDialog()
Definition player_actions.cpp:287
bool movingCardsUntil
Definition player_actions.h:240
void actMulliganMinusOne()
Definition player_actions.cpp:383
void onRelatedCardCreated(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1166
void actViewSideboard()
Definition player_actions.cpp:277
void actDrawArrow()
Definition player_actions.cpp:1425
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:469
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1776
void actMoveBottomCardsToExile()
Definition player_actions.cpp:677
void offsetCardCounter(QList< CardItem * > selectedCards, int counterId, int offset)
Definition player_actions.cpp:1570
void actMoveBottomCardToGrave()
Definition player_actions.cpp:637
void actReveal(QList< CardItem * > selectedCards, QAction *action)
Definition player_actions.cpp:1711
void actPlay(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1691
void actMoveBottomCardsToGraveFaceDown()
Definition player_actions.cpp:672
void actRequestMoveTopCardsUntilDialog()
Definition player_actions.cpp:531
void actSelectAll()
Definition player_actions.cpp:765
void actIncP(QList< CardItem * > selectedCards)
Definition player_actions.cpp:1433
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:581
PlayerActions(PlayerLogic *player)
Definition player_actions.cpp:83
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1730
void requestMoveCardXCardsFromTopDialog(int defaultNumberTopCardsToPlaceBelow, int deckSize)
Definition player_logic.h:56
Definition remote_connection_controller.h:20
CardRelationType
Types of attachments between cards.
Definition card_relation_type.h:16
@ DoesNotAttach
Definition card_relation_type.h:17
Definition game_event_handler.h:57
Definition game_event_handler.h:55
EmailType type
Definition smtpclient.cpp:30
Definition command_move_card.proto:28
Definition dlg_move_top_cards_until.h:25
Definition dlg_create_token.h:29