Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
server_abstract_player.h
Go to the documentation of this file.
1#ifndef ABSTRACT_PLAYER_H
2#define ABSTRACT_PLAYER_H
3
4#include "libcockatrice/protocol/pb/response.pb.h"
6
7#include <QMap>
8#include <QString>
9#include <qtmetamacros.h>
10
11class CardToMove;
12class DeckList;
13class Server_Arrow;
14class Server_Card;
15class Server_CardZone;
16struct MoveCardStruct;
18class ServerInfo_User;
20class Server_Game;
21enum CardAttribute : int;
22template <typename T> class QList;
23
25{
26 Q_OBJECT
27private:
28 class MoveCardCompareFunctor;
29
31
32 void sendCreateTokenEvents(Server_CardZone *zone, Server_Card *card, int xCoord, int yCoord, GameEventStorage &ges);
34
35protected:
42
44
45public:
47 int _playerId,
48 const ServerInfo_User &_userInfo,
49 bool _judge,
52 void prepareDestroy() override;
54 int getCardCount() const;
55 const DeckList *getDeckList() const
56 {
57 return deck;
58 }
59 bool getSideboardLocked() const
60 {
61 return sideboardLocked;
62 }
63 bool getReadyStart() const
64 {
65 return readyStart;
66 }
67 void setReadyStart(bool _readyStart)
68 {
69 readyStart = _readyStart;
70 }
71 bool getConceded() const
72 {
73 return conceded;
74 }
75 void setConceded(bool _conceded)
76 {
77 conceded = _conceded;
78 }
79
81 {
82 return zones;
83 }
85 {
86 return arrows;
87 }
88
89 int newCardId();
90
91 void addZone(Server_CardZone *zone);
92 void addArrow(Server_Arrow *arrow);
93 void updateArrowId(int id);
94 bool deleteArrow(int arrowId);
95
96 virtual void setupZones();
97 virtual void clearZones();
98
100 Server_CardZone *startzone,
101 const QList<const CardToMove *> &_cards,
102 Server_CardZone *targetzone,
103 int xCoord,
104 int yCoord,
105 bool fixFreeSpaces = true,
106 bool undoingDraw = false,
107 bool isReversed = false);
108
110 Server_CardZone *startzone,
111 Server_CardZone *targetzone,
112 MoveCardStruct cardStruct,
113 int xCoord,
114 int yCoord,
115 int &xIndex,
116 bool &revealTopStart,
117 bool &revealTopTarget,
118 bool isReversed,
119 bool undoingDraw);
120
121 virtual void onCardBeingMoved(GameEventStorage &ges,
122 const MoveCardStruct &cardStruct,
123 Server_CardZone *startzone,
124 Server_CardZone *targetzone,
125 bool undoingDraw);
126
127 void unattachCard(GameEventStorage &ges, Server_Card *card);
129 int targetPlayerId,
130 const QString &zone,
131 int cardId,
132 CardAttribute attribute,
133 const QString &attrValue,
134 Server_Card *unzonedCard = nullptr);
135
137 cmdConcede(const Command_Concede &cmd, ResponseContainer &rc, GameEventStorage &ges) override;
143 cmdRollDie(const Command_RollDie &cmd, ResponseContainer &rc, GameEventStorage &ges) const override;
145 cmdMoveCard(const Command_MoveCard &cmd, ResponseContainer &rc, GameEventStorage &ges) override;
147 cmdFlipCard(const Command_FlipCard &cmd, ResponseContainer &rc, GameEventStorage &ges) override;
163 cmdDumpZone(const Command_DumpZone &cmd, ResponseContainer &rc, GameEventStorage &ges) override;
168 GameEventStorage &ges) override;
169
170 virtual void getInfo(ServerInfo_Player *info,
171 Server_AbstractParticipant *playerWhosAsking,
172 bool omniscient,
173 bool withUserInfo) override;
174};
175
176#endif
CardAttribute
Definition card_attributes.proto:2
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:67
Definition server_response_containers.h:50
Definition remote_connection_controller.h:20
Definition game.h:18
Definition server_response_containers.h:93
Definition server_abstract_participant.h:57
Server_AbstractParticipant(Server_Game *_game, int _playerId, const ServerInfo_User &_userInfo, bool _judge, Server_AbstractUserInterface *_handler)
Definition server_abstract_participant.cpp:61
const QMap< int, Server_Arrow * > & getArrows() const
Definition server_abstract_player.h:84
void addArrow(Server_Arrow *arrow)
Definition server_abstract_player.cpp:140
Server_AbstractPlayer(Server_Game *_game, int _playerId, const ServerInfo_User &_userInfo, bool _judge, Server_AbstractUserInterface *_handler)
Definition server_abstract_player.cpp:79
virtual Response::ResponseCode cmdSetCardCounter(const Command_SetCardCounter &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1348
virtual Response::ResponseCode cmdIncCardCounter(const Command_IncCardCounter &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1382
int newCardId()
Definition server_abstract_player.cpp:112
void sendCreateTokenEvents(Server_CardZone *zone, Server_Card *card, int xCoord, int yCoord, GameEventStorage &ges)
Definition server_abstract_player.cpp:1206
void revealTopCardIfNeeded(Server_CardZone *zone, GameEventStorage &ges)
Definition server_abstract_player.cpp:585
virtual Response::ResponseCode cmdRevealCards(const Command_RevealCards &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1499
bool readyStart
Definition server_abstract_player.h:40
virtual Response::ResponseCode cmdDumpZone(const Command_DumpZone &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1419
virtual void setupZones()
Definition server_abstract_player.cpp:117
virtual void clearZones()
Definition server_abstract_player.cpp:122
virtual Response::ResponseCode cmdMoveCard(const Command_MoveCard &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:793
int nextCardId
Definition server_abstract_player.h:41
bool sideboardLocked
Definition server_abstract_player.h:38
void addZone(Server_CardZone *zone)
Definition server_abstract_player.cpp:135
QMap< int, Server_Arrow * > arrows
Definition server_abstract_player.h:30
void processMoveCard(GameEventStorage &ges, Server_CardZone *startzone, Server_CardZone *targetzone, MoveCardStruct cardStruct, int xCoord, int yCoord, int &xIndex, bool &revealTopStart, bool &revealTopTarget, bool isReversed, bool undoingDraw)
Definition server_abstract_player.cpp:380
bool conceded
Definition server_abstract_player.h:36
void unattachCard(GameEventStorage &ges, Server_Card *card)
Definition server_abstract_player.cpp:615
bool getConceded() const
Definition server_abstract_player.h:71
virtual Response::ResponseCode cmdCreateArrow(const Command_CreateArrow &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1235
~Server_AbstractPlayer() override
virtual Response::ResponseCode cmdCreateToken(const Command_CreateToken &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:993
void updateArrowId(int id)
Definition server_abstract_player.cpp:145
DeckList * deck
Definition server_abstract_player.h:37
bool getReadyStart() const
Definition server_abstract_player.h:63
Response::ResponseCode setCardAttrHelper(GameEventStorage &ges, int targetPlayerId, const QString &zone, int cardId, CardAttribute attribute, const QString &attrValue, Server_Card *unzonedCard=nullptr)
Definition server_abstract_player.cpp:633
virtual Response::ResponseCode cmdConcede(const Command_Concede &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:682
virtual void onCardBeingMoved(GameEventStorage &ges, const MoveCardStruct &cardStruct, Server_CardZone *startzone, Server_CardZone *targetzone, bool undoingDraw)
Definition server_abstract_player.cpp:552
const DeckList * getDeckList() const
Definition server_abstract_player.h:55
virtual Response::ResponseCode cmdChangeZoneProperties(const Command_ChangeZoneProperties &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1621
void setConceded(bool _conceded)
Definition server_abstract_player.h:75
void prepareDestroy() override
Definition server_abstract_player.cpp:101
Response::ResponseCode moveCard(GameEventStorage &ges, Server_CardZone *startzone, const QList< const CardToMove * > &_cards, Server_CardZone *targetzone, int xCoord, int yCoord, bool fixFreeSpaces=true, bool undoingDraw=false, bool isReversed=false)
Definition server_abstract_player.cpp:286
virtual void getInfo(ServerInfo_Player *info, Server_AbstractParticipant *playerWhosAsking, bool omniscient, bool withUserInfo) override
Definition server_abstract_player.cpp:1659
virtual Response::ResponseCode cmdSetCardAttr(const Command_SetCardAttr &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1335
bool getSideboardLocked() const
Definition server_abstract_player.h:59
virtual Response::ResponseCode cmdUnconcede(const Command_Unconcede &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:711
virtual Response::ResponseCode cmdDeleteArrow(const Command_DeleteArrow &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:1314
void setReadyStart(bool _readyStart)
Definition server_abstract_player.h:67
const QMap< QString, Server_CardZone * > & getZones() const
Definition server_abstract_player.h:80
int getCardCount() const
Total cards across all of this player's zones. The caller must hold the game's mutex.
Definition server_abstract_player.cpp:92
QMap< QString, Server_CardZone * > zones
Definition server_abstract_player.h:39
virtual Response::ResponseCode cmdReadyStart(const Command_ReadyStart &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:737
virtual Response::ResponseCode cmdFlipCard(const Command_FlipCard &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:837
virtual Response::ResponseCode cmdRollDie(const Command_RollDie &cmd, ResponseContainer &rc, GameEventStorage &ges) const override
Definition server_abstract_player.cpp:767
virtual Response::ResponseCode cmdAttachCard(const Command_AttachCard &cmd, ResponseContainer &rc, GameEventStorage &ges) override
Definition server_abstract_player.cpp:885
bool deleteArrow(int arrowId)
Definition server_abstract_player.cpp:151
void getPlayerProperties(ServerInfo_PlayerProperties &result) override
Definition server_abstract_player.cpp:1681
Definition server_abstractuserinterface.h:28
Definition server_arrow.h:11
Definition server_cardzone.h:36
Definition server_card.h:39
Definition server_game.h:67
Definition command_move_card.proto:5
Definition command_attach_card.proto:3
Definition command_change_zone_properties.proto:3
Definition command_concede.proto:3
Definition command_create_arrow.proto:6
Definition command_create_token.proto:3
Definition command_delete_arrow.proto:3
Definition command_dump_zone.proto:3
Definition command_flip_card.proto:3
Definition command_inc_card_counter.proto:3
Definition command_move_card.proto:28
Definition command_ready_start.proto:3
Definition command_reveal_cards.proto:3
Definition command_roll_die.proto:3
Definition command_set_card_attr.proto:4
Definition command_set_card_counter.proto:3
Definition command_concede.proto:8
Definition server_move_card_struct.h:8
ResponseCode
Definition response.proto:14
Definition serverinfo_playerproperties.proto:3
Definition serverinfo_player.proto:6
Definition serverinfo_user.proto:2