Cockatrice 2026-01-14-Development-2.11.0-beta.46
A cross-platform 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
104 void actDrawBottomCard();
105 void actDrawBottomCards();
113
114 void actSelectAll();
115 void actSelectRow();
116 void actSelectColumn();
117
118 void actViewLibrary();
119 void actViewHand();
120 void actViewTopCards();
121 void actViewBottomCards();
124 void actViewGraveyard();
125 void actLendLibrary(int lendToPlayerId);
126 void actRevealTopCards(int revealToPlayerId, int amount);
127 void actRevealRandomGraveyardCard(int revealToPlayerId);
128 void actViewRfg();
129 void actViewSideboard();
130
131 void actSayMessage();
132
137
140 void actAttach();
141 void actUnattach();
142 void actDrawArrow();
143 void actIncPT(int deltaP, int deltaT);
144 void actResetPT();
145 void actSetPT();
146 void actIncP();
147 void actDecP();
148 void actIncT();
149 void actDecT();
150 void actIncPT();
151 void actDecPT();
152 void actFlowP();
153 void actFlowT();
154 void actSetAnnotation();
155 void actReveal(QAction *action);
156 void actRevealHand(int revealToPlayerId);
157 void actRevealRandomHandCard(int revealToPlayerId);
158 void actRevealLibrary(int revealToPlayerId);
159
160 void actSortHand();
161
162 void cardMenuAction();
163
164private:
166
171
174
177 QStringList movingCardsUntilExprs = {};
182
183 void createCard(const CardItem *sourceCard,
184 const QString &dbCardName,
186 bool persistent = false);
187 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation);
188
189 void playSelectedCards(bool faceDown = false);
190
191 void cmdSetTopCard(Command_MoveCard &cmd);
192 void cmdSetBottomCard(Command_MoveCard &cmd);
193
194 QVariantList parsePT(const QString &pt);
195};
196
197#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:1724
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:514
void doMulligan(int number)
Definition player_actions.cpp:346
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1735
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:915
void actCreatePredefinedToken()
Definition player_actions.cpp:939
void actShuffleTop()
Definition player_actions.cpp:244
void playSelectedCards(bool faceDown=false)
Definition player_actions.cpp:1639
void actAlwaysLookAtTopCard()
Definition player_actions.cpp:210
void actSetAnnotation()
Definition player_actions.cpp:1496
void actDrawBottomCard()
Definition player_actions.cpp:763
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:2004
void actIncT()
Definition player_actions.cpp:1456
void actAttach()
Definition player_actions.cpp:1533
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:1091
void actMoveTopCardToExile()
Definition player_actions.cpp:410
QTimer * moveTopCardTimer
Definition player_actions.h:176
void actViewBottomCards()
Definition player_actions.cpp:188
void actMoveBottomCardToTop()
Definition player_actions.cpp:693
CardsToReveal
Definition player_actions.h:45
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:46
void actDecPT()
Definition player_actions.cpp:1471
bool isMovingCardsUntil() const
Definition player_actions.h:67
void actMulliganSameSize()
Definition player_actions.cpp:333
void actMoveTopCardToPlay()
Definition player_actions.cpp:565
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:168
Player * player
Definition player_actions.h:165
QVariantList parsePT(const QString &pt)
Definition player_actions.cpp:1345
void actMulligan()
Definition player_actions.cpp:309
void actMoveBottomCardToPlay()
Definition player_actions.cpp:810
void actShuffle()
Definition player_actions.cpp:239
void actMoveTopCardToBottom()
Definition player_actions.cpp:550
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:43
void actCreateAnotherToken()
Definition player_actions.cpp:894
void actUnattach()
Definition player_actions.cpp:1543
void actIncPT()
Definition player_actions.cpp:1466
void actViewRfg()
Definition player_actions.cpp:229
void actDrawCard()
Definition player_actions.cpp:302
void actDrawBottomCards()
Definition player_actions.cpp:778
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:629
void actRollDie()
Definition player_actions.cpp:858
int lastTokenTableRow
Definition player_actions.h:173
void cmdSetBottomCard(Command_MoveCard &cmd)
Definition player_actions.cpp:385
void actReveal(QAction *action)
Definition player_actions.cpp:1680
int defaultNumberTopCards
Definition player_actions.h:167
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1712
void actCardCounterTrigger()
Definition player_actions.cpp:1561
int movingCardsUntilNumberOfHits
Definition player_actions.h:178
void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation)
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:580
void actMoveTopCardsUntil()
Definition player_actions.cpp:489
void actSayMessage()
Definition player_actions.cpp:1162
int defaultNumberBottomCards
Definition player_actions.h:169
void actMoveCardXCardsFromTop()
Definition player_actions.cpp:1225
void actViewLibrary()
Definition player_actions.cpp:133
void actFlowT()
Definition player_actions.cpp:1481
void actCreateAllRelatedCards()
Definition player_actions.cpp:974
void cardMenuAction()
Definition player_actions.cpp:1773
void actDecP()
Definition player_actions.cpp:1451
void actSelectRow()
Definition player_actions.cpp:739
int defaultNumberDieRoll
Definition player_actions.h:170
void actHide()
Definition player_actions.cpp:1670
void actIncP()
Definition player_actions.cpp:1446
void actUntapAll()
Definition player_actions.cpp:848
TokenInfo lastTokenInfo
Definition player_actions.h:172
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:1461
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:219
void actMoveBottomCardToExile()
Definition player_actions.cpp:614
FilterString movingCardsUntilFilter
Definition player_actions.h:180
void actCreateRelatedCard()
Definition player_actions.cpp:952
int movingCardsUntilCounter
Definition player_actions.h:181
void actMoveTopCardsToExile()
Definition player_actions.cpp:457
void actPlayFacedown()
Definition player_actions.cpp:1665
void actSelectColumn()
Definition player_actions.cpp:752
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:177
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1762
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:825
void setCardAttrHelper(const GameEventContext &context, CardItem *card, CardAttribute attribute, const QString &avalue, bool allCards, EventProcessingOptions options)
Definition player_actions.cpp:1170
void actPlay()
Definition player_actions.cpp:1660
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
void actViewHand()
Definition player_actions.cpp:138
void actResetPT()
Definition player_actions.cpp:1311
void actShuffleBottom()
Definition player_actions.cpp:273
void actViewTopCards()
Definition player_actions.cpp:175
bool movingCardsUntil
Definition player_actions.h:175
void actMulliganMinusOne()
Definition player_actions.cpp:339
void actViewSideboard()
Definition player_actions.cpp:234
void actDrawArrow()
Definition player_actions.cpp:1438
void actSetPT()
Definition player_actions.cpp:1376
void actMoveTopCardsToGrave()
Definition player_actions.cpp:425
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1747
void actDrawCards()
Definition player_actions.cpp:357
void actFlowP()
Definition player_actions.cpp:1476
void actMoveBottomCardsToExile()
Definition player_actions.cpp:661
bool movingCardsUntilAutoPlay
Definition player_actions.h:179
void actAlwaysRevealTopCard()
Definition player_actions.cpp:201
void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap)
void actCreateToken()
Definition player_actions.cpp:871
void actMoveBottomCardToGrave()
Definition player_actions.cpp:599
void actSelectAll()
Definition player_actions.cpp:729
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:543
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1701
PlayerActions(Player *player)
Definition player_actions.cpp:35
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1054
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