Cockatrice 2026-03-05-Development-2.11.0-beta.54
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
12#include "player.h"
13
14#include <QMenu>
15#include <QObject>
18#include <libcockatrice/protocol/pb/card_attributes.pb.h>
19
20namespace google
21{
22namespace protobuf
23{
24class Message;
25}
26} // namespace google
27
28class CardItem;
29class Command_MoveCard;
30class GameEventContext;
31class PendingCommand;
32class Player;
33class PlayerActions : public QObject
34{
35 Q_OBJECT
36
37signals:
38 void logSetTapped(Player *player, CardItem *card, bool tapped);
39 void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation);
40 void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap);
41 void logSetPT(Player *player, CardItem *card, QString newPT);
42
43public:
48
49 explicit PlayerActions(Player *player);
50
52 void sendGameCommand(const google::protobuf::Message &command);
53
54 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
55 PendingCommand *prepareGameCommand(const QList<const ::google::protobuf::Message *> &cmdList);
56
57 void setCardAttrHelper(const GameEventContext &context,
58 CardItem *card,
59 CardAttribute attribute,
60 const QString &avalue,
61 bool allCards,
62 EventProcessingOptions options);
63
64 void moveOneCardUntil(CardItem *card);
66
67 [[nodiscard]] bool isMovingCardsUntil() const
68 {
69 return movingCardsUntil;
70 }
71
72public slots:
73 void setLastToken(CardInfoPtr cardInfo);
74 void playCard(CardItem *c, bool faceDown);
75 void playCardToTable(const CardItem *c, bool faceDown);
76
77 void actUntapAll();
78 void actRollDie();
79 void actCreateToken();
81 void actShuffle();
82 void actShuffleTop();
83 void actShuffleBottom();
84 void actDrawCard();
85 void actDrawCards();
86 void actUndoDraw();
87 void actMulligan();
90 void doMulligan(int number);
91
92 void actPlay();
93 void actPlayFacedown();
94 void actHide();
95
106 void actDrawBottomCard();
107 void actDrawBottomCards();
117
118 void actSelectAll();
119 void actSelectRow();
120 void actSelectColumn();
121
122 void actViewLibrary();
123 void actViewHand();
124 void actViewTopCards();
125 void actViewBottomCards();
128 void actViewGraveyard();
129 void actLendLibrary(int lendToPlayerId);
130 void actRevealTopCards(int revealToPlayerId, int amount);
131 void actRevealRandomGraveyardCard(int revealToPlayerId);
132 void actViewRfg();
133 void actViewSideboard();
134
135 void actSayMessage();
136
141
144 void actAttach();
145 void actUnattach();
146 void actDrawArrow();
147 void actIncPT(int deltaP, int deltaT);
148 void actResetPT();
149 void actSetPT();
150 void actIncP();
151 void actDecP();
152 void actIncT();
153 void actDecT();
154 void actIncPT();
155 void actDecPT();
156 void actFlowP();
157 void actFlowT();
158 void actSetAnnotation();
159 void actReveal(QAction *action);
160 void actRevealHand(int revealToPlayerId);
161 void actRevealRandomHandCard(int revealToPlayerId);
162 void actRevealLibrary(int revealToPlayerId);
163
164 void actSortHand();
165
166 void cardMenuAction();
167
168private:
170
175
178
181 QStringList movingCardsUntilExprs = {};
186
187 void moveTopCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
188 void moveBottomCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown);
189
190 void createCard(const CardItem *sourceCard,
191 const QString &dbCardName,
193 bool persistent = false);
194 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation);
195
196 void playSelectedCards(bool faceDown = false);
197
198 void cmdSetTopCard(Command_MoveCard &cmd);
199 void cmdSetBottomCard(Command_MoveCard &cmd);
200
201 QVariantList parsePT(const QString &pt);
202};
203
204#endif // COCKATRICE_PLAYER_ACTIONS_H
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
Definition card_item.h:29
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:1712
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:508
void doMulligan(int number)
Definition player_actions.cpp:346
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1723
void moveBottomCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:643
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:903
void actCreatePredefinedToken()
Definition player_actions.cpp:927
void actShuffleTop()
Definition player_actions.cpp:244
void playSelectedCards(bool faceDown=false)
Definition player_actions.cpp:1627
void moveTopCardsTo(const QString &targetZone, const QString &zoneDisplayName, bool faceDown)
Definition player_actions.cpp:445
void actAlwaysLookAtTopCard()
Definition player_actions.cpp:210
void actSetAnnotation()
Definition player_actions.cpp:1484
void actDrawBottomCard()
Definition player_actions.cpp:751
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:1992
void actIncT()
Definition player_actions.cpp:1444
void actAttach()
Definition player_actions.cpp:1521
void actSortHand()
Definition player_actions.cpp:163
void actUndoDraw()
Definition player_actions.cpp:372
void createCard(const CardItem *sourceCard, const QString &dbCardName, CardRelationType attach=CardRelationType::DoesNotAttach, bool persistent=false)
Definition player_actions.cpp:1079
void actMoveTopCardToExile()
Definition player_actions.cpp:410
QTimer * moveTopCardTimer
Definition player_actions.h:180
void actViewBottomCards()
Definition player_actions.cpp:188
void actMoveBottomCardToTop()
Definition player_actions.cpp:681
CardsToReveal
Definition player_actions.h:45
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:46
void actDecPT()
Definition player_actions.cpp:1459
bool isMovingCardsUntil() const
Definition player_actions.h:67
void actMulliganSameSize()
Definition player_actions.cpp:333
void actMoveBottomCardsToExileFaceDown()
Definition player_actions.cpp:638
void actMoveTopCardToPlay()
Definition player_actions.cpp:559
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:172
Player * player
Definition player_actions.h:169
QVariantList parsePT(const QString &pt)
Definition player_actions.cpp:1333
void actMulligan()
Definition player_actions.cpp:309
void actMoveBottomCardToPlay()
Definition player_actions.cpp:798
void actMoveTopCardsToExileFaceDown()
Definition player_actions.cpp:440
void actShuffle()
Definition player_actions.cpp:239
void actMoveTopCardToBottom()
Definition player_actions.cpp:544
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:43
void actCreateAnotherToken()
Definition player_actions.cpp:882
void actMoveTopCardsToGraveFaceDown()
Definition player_actions.cpp:430
void actUnattach()
Definition player_actions.cpp:1531
void actIncPT()
Definition player_actions.cpp:1454
void actViewRfg()
Definition player_actions.cpp:229
void actDrawCard()
Definition player_actions.cpp:302
void actDrawBottomCards()
Definition player_actions.cpp:766
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:623
void actRollDie()
Definition player_actions.cpp:846
int lastTokenTableRow
Definition player_actions.h:177
void cmdSetBottomCard(Command_MoveCard &cmd)
Definition player_actions.cpp:385
void actReveal(QAction *action)
Definition player_actions.cpp:1668
int defaultNumberTopCards
Definition player_actions.h:171
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1700
void actCardCounterTrigger()
Definition player_actions.cpp:1549
int movingCardsUntilNumberOfHits
Definition player_actions.h:182
void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation)
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:574
void actMoveTopCardsUntil()
Definition player_actions.cpp:483
void actSayMessage()
Definition player_actions.cpp:1150
int defaultNumberBottomCards
Definition player_actions.h:173
void actMoveCardXCardsFromTop()
Definition player_actions.cpp:1213
void actViewLibrary()
Definition player_actions.cpp:133
void actFlowT()
Definition player_actions.cpp:1469
void actCreateAllRelatedCards()
Definition player_actions.cpp:962
void cardMenuAction()
Definition player_actions.cpp:1761
void actDecP()
Definition player_actions.cpp:1439
void actSelectRow()
Definition player_actions.cpp:727
int defaultNumberDieRoll
Definition player_actions.h:174
void actHide()
Definition player_actions.cpp:1658
void actIncP()
Definition player_actions.cpp:1434
void actUntapAll()
Definition player_actions.cpp:836
TokenInfo lastTokenInfo
Definition player_actions.h:176
void actMoveTopCardToGrave()
Definition player_actions.cpp:395
void actViewGraveyard()
Definition player_actions.cpp:224
void logSetTapped(Player *player, CardItem *card, bool tapped)
void actDecT()
Definition player_actions.cpp:1449
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:219
void actMoveBottomCardToExile()
Definition player_actions.cpp:608
FilterString movingCardsUntilFilter
Definition player_actions.h:184
void actCreateRelatedCard()
Definition player_actions.cpp:940
int movingCardsUntilCounter
Definition player_actions.h:185
void actMoveTopCardsToExile()
Definition player_actions.cpp:435
void actPlayFacedown()
Definition player_actions.cpp:1653
void actSelectColumn()
Definition player_actions.cpp:740
void playCardToTable(const CardItem *c, bool faceDown)
Definition player_actions.cpp:95
void cmdSetTopCard(Command_MoveCard &cmd)
Definition player_actions.cpp:377
void logSetPT(Player *player, CardItem *card, QString newPT)
QStringList movingCardsUntilExprs
Definition player_actions.h:181
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1750
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:813
void setCardAttrHelper(const GameEventContext &context, CardItem *card, CardAttribute attribute, const QString &avalue, bool allCards, EventProcessingOptions options)
Definition player_actions.cpp:1158
void actPlay()
Definition player_actions.cpp:1648
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
void actViewHand()
Definition player_actions.cpp:138
void actResetPT()
Definition player_actions.cpp:1299
void actShuffleBottom()
Definition player_actions.cpp:273
void actViewTopCards()
Definition player_actions.cpp:175
bool movingCardsUntil
Definition player_actions.h:179
void actMulliganMinusOne()
Definition player_actions.cpp:339
void actViewSideboard()
Definition player_actions.cpp:234
void actDrawArrow()
Definition player_actions.cpp:1426
void actSetPT()
Definition player_actions.cpp:1364
void actMoveTopCardsToGrave()
Definition player_actions.cpp:425
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1735
void actDrawCards()
Definition player_actions.cpp:357
void actFlowP()
Definition player_actions.cpp:1464
void actMoveBottomCardsToExile()
Definition player_actions.cpp:633
bool movingCardsUntilAutoPlay
Definition player_actions.h:183
void actAlwaysRevealTopCard()
Definition player_actions.cpp:201
void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap)
void actCreateToken()
Definition player_actions.cpp:859
void actMoveBottomCardToGrave()
Definition player_actions.cpp:593
void actMoveBottomCardsToGraveFaceDown()
Definition player_actions.cpp:628
void actSelectAll()
Definition player_actions.cpp:717
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:537
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1689
PlayerActions(Player *player)
Definition player_actions.cpp:35
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1042
Definition player.h:65
static constexpr int amount
Definition deck_hash_performance_test.cpp:5
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_create_token.h:26