Cockatrice 2026-04-21-Development-2.11.0-beta.61
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
13#include "player.h"
14
15#include <QMenu>
16#include <QObject>
19#include <libcockatrice/protocol/pb/card_attributes.pb.h>
20
21namespace google
22{
23namespace protobuf
24{
25class Message;
26}
27} // namespace google
28
29class CardItem;
30class Command_MoveCard;
31class GameEventContext;
32class PendingCommand;
33class Player;
34class PlayerActions : public QObject
35{
36 Q_OBJECT
37
38signals:
39 void logSetTapped(Player *player, CardItem *card, bool tapped);
40 void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation);
41 void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap);
42 void logSetPT(Player *player, CardItem *card, QString newPT);
43
44public:
49
50 explicit PlayerActions(Player *player);
51
53 void sendGameCommand(const google::protobuf::Message &command);
54
55 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
56 PendingCommand *prepareGameCommand(const QList<const ::google::protobuf::Message *> &cmdList);
57
58 void setCardAttrHelper(const GameEventContext &context,
59 CardItem *card,
60 CardAttribute attribute,
61 const QString &avalue,
62 bool allCards,
63 EventProcessingOptions options);
64
65 void moveOneCardUntil(CardItem *card);
67
68 [[nodiscard]] bool isMovingCardsUntil() const
69 {
70 return movingCardsUntil;
71 }
72
73public slots:
74 void setLastToken(CardInfoPtr cardInfo);
75 void playCard(CardItem *c, bool faceDown);
76 void playCardToTable(const CardItem *c, bool faceDown);
77
78 void actUntapAll();
79 void actRollDie();
80 void actCreateToken();
82 void actShuffle();
83 void actShuffleTop();
84 void actShuffleBottom();
85 void actDrawCard();
86 void actDrawCards();
87 void actUndoDraw();
88 void actMulligan();
91 void doMulligan(int number);
92
93 void actPlay();
94 void actPlayFacedown();
95 void actHide();
96
107 void actDrawBottomCard();
108 void actDrawBottomCards();
118
119 void actSelectAll();
120 void actSelectRow();
121 void actSelectColumn();
122
123 void actViewLibrary();
124 void actViewHand();
125 void actViewTopCards();
126 void actViewBottomCards();
129 void actViewGraveyard();
130 void actLendLibrary(int lendToPlayerId);
131 void actRevealTopCards(int revealToPlayerId, int amount);
132 void actRevealRandomGraveyardCard(int revealToPlayerId);
133 void actViewRfg();
134 void actViewSideboard();
135
136 void actSayMessage();
137
142
145 void actAttach();
146 void actUnattach();
147 void actDrawArrow();
148 void actIncPT(int deltaP, int deltaT);
149 void actResetPT();
150 void actSetPT();
151 void actIncP();
152 void actDecP();
153 void actIncT();
154 void actDecT();
155 void actIncPT();
156 void actDecPT();
157 void actFlowP();
158 void actFlowT();
159 void actSetAnnotation();
160 void actReveal(QAction *action);
161 void actRevealHand(int revealToPlayerId);
162 void actRevealRandomHandCard(int revealToPlayerId);
163 void actRevealLibrary(int revealToPlayerId);
164
165 void actSortHand();
166
167 void cardMenuAction();
168
169private:
171
176
179
185
186 void moveTopCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
187 void moveBottomCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
188
189 void createCard(const CardItem *sourceCard,
190 const QString &dbCardName,
192 bool persistent = false);
193 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation);
194
195 void playSelectedCards(bool faceDown = false);
196
197 void cmdSetTopCard(Command_MoveCard &cmd);
198 void cmdSetBottomCard(Command_MoveCard &cmd);
199
200 QVariantList parsePT(const QString &pt);
201};
202
203#endif // COCKATRICE_PLAYER_ACTIONS_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
Definition card_item.h:27
Represents a relationship between two cards.
Definition card_relation.h:24
Definition filter_string.h:34
Definition pending_command.h:15
void actRevealLibrary(int revealToPlayerId)
Definition player_actions.cpp:1717
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:504
void doMulligan(int number)
Definition player_actions.cpp:345
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1728
void moveBottomCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:639
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:899
void actCreatePredefinedToken()
Definition player_actions.cpp:923
void actShuffleTop()
Definition player_actions.cpp:243
void playSelectedCards(bool faceDown=false)
Definition player_actions.cpp:1632
void moveTopCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:444
void actAlwaysLookAtTopCard()
Definition player_actions.cpp:209
void actSetAnnotation()
Definition player_actions.cpp:1478
void actDrawBottomCard()
Definition player_actions.cpp:747
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:2025
void actIncT()
Definition player_actions.cpp:1438
void actAttach()
Definition player_actions.cpp:1515
void actSortHand()
Definition player_actions.cpp:162
void actUndoDraw()
Definition player_actions.cpp:371
void createCard(const CardItem *sourceCard, const QString &dbCardName, CardRelationType attach=CardRelationType::DoesNotAttach, bool persistent=false)
Definition player_actions.cpp:1075
void actMoveTopCardToExile()
Definition player_actions.cpp:409
QTimer * moveTopCardTimer
Definition player_actions.h:181
void actViewBottomCards()
Definition player_actions.cpp:187
void actMoveBottomCardToTop()
Definition player_actions.cpp:677
CardsToReveal
Definition player_actions.h:46
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:47
void actDecPT()
Definition player_actions.cpp:1453
bool isMovingCardsUntil() const
Definition player_actions.h:68
void actMulliganSameSize()
Definition player_actions.cpp:332
void actMoveBottomCardsToExileFaceDown()
Definition player_actions.cpp:634
void actMoveTopCardToPlay()
Definition player_actions.cpp:555
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:173
Player * player
Definition player_actions.h:170
QVariantList parsePT(const QString &pt)
Definition player_actions.cpp:1327
void actMulligan()
Definition player_actions.cpp:308
void actMoveBottomCardToPlay()
Definition player_actions.cpp:794
void actMoveTopCardsToExileFaceDown()
Definition player_actions.cpp:439
void actShuffle()
Definition player_actions.cpp:238
void actMoveTopCardToBottom()
Definition player_actions.cpp:540
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:47
void actCreateAnotherToken()
Definition player_actions.cpp:878
void actMoveTopCardsToGraveFaceDown()
Definition player_actions.cpp:429
void actUnattach()
Definition player_actions.cpp:1525
void actIncPT()
Definition player_actions.cpp:1448
void actViewRfg()
Definition player_actions.cpp:228
void actDrawCard()
Definition player_actions.cpp:301
void actDrawBottomCards()
Definition player_actions.cpp:762
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:619
void actRollDie()
Definition player_actions.cpp:842
int lastTokenTableRow
Definition player_actions.h:178
void cmdSetBottomCard(Command_MoveCard &cmd)
Definition player_actions.cpp:384
void actReveal(QAction *action)
Definition player_actions.cpp:1673
int defaultNumberTopCards
Definition player_actions.h:172
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1705
void actCardCounterTrigger()
Definition player_actions.cpp:1543
void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation)
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:570
void actMoveTopCardsUntil()
Definition player_actions.cpp:482
void actSayMessage()
Definition player_actions.cpp:1144
int defaultNumberBottomCards
Definition player_actions.h:174
void actMoveCardXCardsFromTop()
Definition player_actions.cpp:1207
void actViewLibrary()
Definition player_actions.cpp:132
void actFlowT()
Definition player_actions.cpp:1463
void actCreateAllRelatedCards()
Definition player_actions.cpp:958
void cardMenuAction()
Definition player_actions.cpp:1766
MoveTopCardsUntilOptions movingCardsUntilOptions
Definition player_actions.h:184
void actDecP()
Definition player_actions.cpp:1433
void actSelectRow()
Definition player_actions.cpp:723
int defaultNumberDieRoll
Definition player_actions.h:175
void actHide()
Definition player_actions.cpp:1663
void actIncP()
Definition player_actions.cpp:1428
void actUntapAll()
Definition player_actions.cpp:832
TokenInfo lastTokenInfo
Definition player_actions.h:177
void actMoveTopCardToGrave()
Definition player_actions.cpp:394
void actViewGraveyard()
Definition player_actions.cpp:223
void logSetTapped(Player *player, CardItem *card, bool tapped)
void actDecT()
Definition player_actions.cpp:1443
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:218
void actMoveBottomCardToExile()
Definition player_actions.cpp:604
FilterString movingCardsUntilFilter
Definition player_actions.h:182
void actCreateRelatedCard()
Definition player_actions.cpp:936
int movingCardsUntilCounter
Definition player_actions.h:183
void actMoveTopCardsToExile()
Definition player_actions.cpp:434
void actPlayFacedown()
Definition player_actions.cpp:1658
void actSelectColumn()
Definition player_actions.cpp:736
void playCardToTable(const CardItem *c, bool faceDown)
Definition player_actions.cpp:99
void cmdSetTopCard(Command_MoveCard &cmd)
Definition player_actions.cpp:376
void logSetPT(Player *player, CardItem *card, QString newPT)
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1755
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:809
void setCardAttrHelper(const GameEventContext &context, CardItem *card, CardAttribute attribute, const QString &avalue, bool allCards, EventProcessingOptions options)
Definition player_actions.cpp:1152
void actPlay()
Definition player_actions.cpp:1653
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
void actViewHand()
Definition player_actions.cpp:137
void actResetPT()
Definition player_actions.cpp:1293
void actShuffleBottom()
Definition player_actions.cpp:272
void actViewTopCards()
Definition player_actions.cpp:174
bool movingCardsUntil
Definition player_actions.h:180
void actMulliganMinusOne()
Definition player_actions.cpp:338
void actViewSideboard()
Definition player_actions.cpp:233
void actDrawArrow()
Definition player_actions.cpp:1420
void actSetPT()
Definition player_actions.cpp:1358
void actMoveTopCardsToGrave()
Definition player_actions.cpp:424
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1740
void actDrawCards()
Definition player_actions.cpp:356
void actFlowP()
Definition player_actions.cpp:1458
void actMoveBottomCardsToExile()
Definition player_actions.cpp:629
void actAlwaysRevealTopCard()
Definition player_actions.cpp:200
void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap)
void actCreateToken()
Definition player_actions.cpp:855
void actMoveBottomCardToGrave()
Definition player_actions.cpp:589
void actMoveBottomCardsToGraveFaceDown()
Definition player_actions.cpp:624
void actSelectAll()
Definition player_actions.cpp:713
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:533
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1694
PlayerActions(Player *player)
Definition player_actions.cpp:38
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1038
Definition player.h:66
static constexpr int amount
Definition deck_hash_performance_test.cpp:5
TODO: Document this.
TODO: Document this.
TODO: Document this.
TODO: Document this.
CardRelationType
Types of attachments between cards.
Definition card_relation_type.h:16
@ DoesNotAttach
Definition card_relation_type.h:17
Definition phases_toolbar.h:20
Definition phases_toolbar.h:18
TODO: Document this.
Definition dlg_move_top_cards_until.h:20
Definition dlg_create_token.h:26