Cockatrice 2025-11-30-Development-2.11.0-beta.38
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();
88
89 void actPlay();
90 void actPlayFacedown();
91 void actHide();
92
101 void actDrawBottomCard();
102 void actDrawBottomCards();
110
111 void actSelectAll();
112 void actSelectRow();
113 void actSelectColumn();
114
115 void actViewLibrary();
116 void actViewHand();
117 void actViewTopCards();
118 void actViewBottomCards();
121 void actViewGraveyard();
122 void actLendLibrary(int lendToPlayerId);
123 void actRevealTopCards(int revealToPlayerId, int amount);
124 void actRevealRandomGraveyardCard(int revealToPlayerId);
125 void actViewRfg();
126 void actViewSideboard();
127
128 void actSayMessage();
129
134
137 void actAttach();
138 void actUnattach();
139 void actDrawArrow();
140 void actIncPT(int deltaP, int deltaT);
141 void actResetPT();
142 void actSetPT();
143 void actIncP();
144 void actDecP();
145 void actIncT();
146 void actDecT();
147 void actIncPT();
148 void actDecPT();
149 void actFlowP();
150 void actFlowT();
151 void actSetAnnotation();
152 void actReveal(QAction *action);
153 void actRevealHand(int revealToPlayerId);
154 void actRevealRandomHandCard(int revealToPlayerId);
155 void actRevealLibrary(int revealToPlayerId);
156
157 void actSortHand();
158
159 void cardMenuAction();
160
161private:
163
168
171
174 QStringList movingCardsUntilExprs = {};
179
180 void createCard(const CardItem *sourceCard,
181 const QString &dbCardName,
183 bool persistent = false);
184 bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation);
185
186 void playSelectedCards(bool faceDown = false);
187
188 void cmdSetTopCard(Command_MoveCard &cmd);
189 void cmdSetBottomCard(Command_MoveCard &cmd);
190
191 QVariantList parsePT(const QString &pt);
192};
193
194#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:1704
void moveOneCardUntil(CardItem *card)
Definition player_actions.cpp:494
void actLendLibrary(int lendToPlayerId)
Definition player_actions.cpp:1715
void setLastToken(CardInfoPtr cardInfo)
Definition player_actions.cpp:895
void actCreatePredefinedToken()
Definition player_actions.cpp:919
void actShuffleTop()
Definition player_actions.cpp:244
void playSelectedCards(bool faceDown=false)
Definition player_actions.cpp:1619
void actAlwaysLookAtTopCard()
Definition player_actions.cpp:210
void actSetAnnotation()
Definition player_actions.cpp:1476
void actDrawBottomCard()
Definition player_actions.cpp:743
void sendGameCommand(PendingCommand *pend)
Definition player_actions.cpp:1984
void actIncT()
Definition player_actions.cpp:1436
void actAttach()
Definition player_actions.cpp:1513
void actSortHand()
Definition player_actions.cpp:163
void actUndoDraw()
Definition player_actions.cpp:352
void createCard(const CardItem *sourceCard, const QString &dbCardName, CardRelationType attach=CardRelationType::DoesNotAttach, bool persistent=false)
Definition player_actions.cpp:1071
void actMoveTopCardToExile()
Definition player_actions.cpp:390
QTimer * moveTopCardTimer
Definition player_actions.h:173
void actViewBottomCards()
Definition player_actions.cpp:188
void actMoveBottomCardToTop()
Definition player_actions.cpp:673
CardsToReveal
Definition player_actions.h:45
@ RANDOM_CARD_FROM_ZONE
Definition player_actions.h:46
void actDecPT()
Definition player_actions.cpp:1451
bool isMovingCardsUntil() const
Definition player_actions.h:67
void actMoveTopCardToPlay()
Definition player_actions.cpp:545
int defaultNumberTopCardsToPlaceBelow
Definition player_actions.h:165
Player * player
Definition player_actions.h:162
QVariantList parsePT(const QString &pt)
Definition player_actions.cpp:1325
void actMulligan()
Definition player_actions.cpp:309
void actMoveBottomCardToPlay()
Definition player_actions.cpp:790
void actShuffle()
Definition player_actions.cpp:239
void actMoveTopCardToBottom()
Definition player_actions.cpp:530
void playCard(CardItem *c, bool faceDown)
Definition player_actions.cpp:43
void actCreateAnotherToken()
Definition player_actions.cpp:874
void actUnattach()
Definition player_actions.cpp:1523
void actIncPT()
Definition player_actions.cpp:1446
void actViewRfg()
Definition player_actions.cpp:229
void actDrawCard()
Definition player_actions.cpp:302
void actDrawBottomCards()
Definition player_actions.cpp:758
void actMoveBottomCardsToGrave()
Definition player_actions.cpp:609
void actRollDie()
Definition player_actions.cpp:838
int lastTokenTableRow
Definition player_actions.h:170
void cmdSetBottomCard(Command_MoveCard &cmd)
Definition player_actions.cpp:365
void actReveal(QAction *action)
Definition player_actions.cpp:1660
int defaultNumberTopCards
Definition player_actions.h:164
void actRevealRandomHandCard(int revealToPlayerId)
Definition player_actions.cpp:1692
void actCardCounterTrigger()
Definition player_actions.cpp:1541
int movingCardsUntilNumberOfHits
Definition player_actions.h:175
void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation)
void actMoveTopCardToPlayFaceDown()
Definition player_actions.cpp:560
void actMoveTopCardsUntil()
Definition player_actions.cpp:469
void actSayMessage()
Definition player_actions.cpp:1142
int defaultNumberBottomCards
Definition player_actions.h:166
void actMoveCardXCardsFromTop()
Definition player_actions.cpp:1205
void actViewLibrary()
Definition player_actions.cpp:133
void actFlowT()
Definition player_actions.cpp:1461
void actCreateAllRelatedCards()
Definition player_actions.cpp:954
void cardMenuAction()
Definition player_actions.cpp:1753
void actDecP()
Definition player_actions.cpp:1431
void actSelectRow()
Definition player_actions.cpp:719
int defaultNumberDieRoll
Definition player_actions.h:167
void actHide()
Definition player_actions.cpp:1650
void actIncP()
Definition player_actions.cpp:1426
void actUntapAll()
Definition player_actions.cpp:828
TokenInfo lastTokenInfo
Definition player_actions.h:169
void actMoveTopCardToGrave()
Definition player_actions.cpp:375
void actViewGraveyard()
Definition player_actions.cpp:224
void logSetTapped(Player *player, CardItem *card, bool tapped)
void actDecT()
Definition player_actions.cpp:1441
void actOpenDeckInDeckEditor()
Definition player_actions.cpp:219
void actMoveBottomCardToExile()
Definition player_actions.cpp:594
FilterString movingCardsUntilFilter
Definition player_actions.h:177
void actCreateRelatedCard()
Definition player_actions.cpp:932
int movingCardsUntilCounter
Definition player_actions.h:178
void actMoveTopCardsToExile()
Definition player_actions.cpp:437
void actPlayFacedown()
Definition player_actions.cpp:1645
void actSelectColumn()
Definition player_actions.cpp:732
void playCardToTable(const CardItem *c, bool faceDown)
Definition player_actions.cpp:95
void cmdSetTopCard(Command_MoveCard &cmd)
Definition player_actions.cpp:357
void logSetPT(Player *player, CardItem *card, QString newPT)
QStringList movingCardsUntilExprs
Definition player_actions.h:174
void actRevealRandomGraveyardCard(int revealToPlayerId)
Definition player_actions.cpp:1742
void actMoveBottomCardToPlayFaceDown()
Definition player_actions.cpp:805
void setCardAttrHelper(const GameEventContext &context, CardItem *card, CardAttribute attribute, const QString &avalue, bool allCards, EventProcessingOptions options)
Definition player_actions.cpp:1150
void actPlay()
Definition player_actions.cpp:1640
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
void actViewHand()
Definition player_actions.cpp:138
void actResetPT()
Definition player_actions.cpp:1291
void actShuffleBottom()
Definition player_actions.cpp:273
void actViewTopCards()
Definition player_actions.cpp:175
bool movingCardsUntil
Definition player_actions.h:172
void actViewSideboard()
Definition player_actions.cpp:234
void actDrawArrow()
Definition player_actions.cpp:1418
void actSetPT()
Definition player_actions.cpp:1356
void actMoveTopCardsToGrave()
Definition player_actions.cpp:405
void actRevealTopCards(int revealToPlayerId, int amount)
Definition player_actions.cpp:1727
void actDrawCards()
Definition player_actions.cpp:337
void actFlowP()
Definition player_actions.cpp:1456
void actMoveBottomCardsToExile()
Definition player_actions.cpp:641
bool movingCardsUntilAutoPlay
Definition player_actions.h:176
void actAlwaysRevealTopCard()
Definition player_actions.cpp:201
void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap)
void actCreateToken()
Definition player_actions.cpp:851
void actMoveBottomCardToGrave()
Definition player_actions.cpp:579
void actSelectAll()
Definition player_actions.cpp:709
void stopMoveTopCardsUntil()
Immediately stops any ongoing play top card to stack until... process, resetting all variables involv...
Definition player_actions.cpp:523
void actRevealHand(int revealToPlayerId)
Definition player_actions.cpp:1681
PlayerActions(Player *player)
Definition player_actions.cpp:35
bool createRelatedFromRelation(const CardItem *sourceCard, const CardRelation *cardRelation)
Definition player_actions.cpp:1034
Definition player.h:65
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