Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
server_cardzone.h
Go to the documentation of this file.
1/***************************************************************************
2 * Copyright (C) 2008 by Max-Wilhelm Bruker *
3 * brukie@laptop *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20#ifndef SERVER_CARDZONE_H
21#define SERVER_CARDZONE_H
22
23#include <QList>
24#include <QMap>
25#include <QSet>
26#include <QString>
27#include <QtGlobal>
28#include <libcockatrice/protocol/pb/serverinfo_zone.pb.h>
29
30class Server_Card;
34
36{
37private:
39 QString name;
40 bool has_coords; // having coords means this zone has x and y coordinates
50 void removeCardFromCoordMap(Server_Card *card, int oldX, int oldY);
51 void insertCardIntoCoordMap(Server_Card *card, int x, int y);
52
53public:
55 const QString &_name,
56 bool _has_coords,
59
60 [[nodiscard]] const QList<Server_Card *> &getCards() const
61 {
62 return cards;
63 }
64 int removeCard(Server_Card *card);
65 int removeCard(Server_Card *card, bool &wasLookedAt);
66 Server_Card *getCard(int id, int *position = nullptr, bool remove = false);
67
68 [[nodiscard]] int getCardsBeingLookedAt() const
69 {
70 return cardsBeingLookedAt;
71 }
72 void setCardsBeingLookedAt(int _cardsBeingLookedAt)
73 {
74 cardsBeingLookedAt = qMax(0, _cardsBeingLookedAt);
75 }
76 [[nodiscard]] bool isCardAtPosLookedAt(int pos) const;
77 [[nodiscard]] bool hasCoords() const
78 {
79 return has_coords;
80 }
81 [[nodiscard]] ServerInfo_Zone::ZoneType getType() const
82 {
83 return type;
84 }
85 [[nodiscard]] QString getName() const
86 {
87 return name;
88 }
89 [[nodiscard]] Server_AbstractPlayer *getPlayer() const
90 {
91 return player;
92 }
93 void getInfo(ServerInfo_Zone *info, Server_AbstractParticipant *recipient, bool omniscient);
94
95 [[nodiscard]] int getFreeGridColumn(int x, int y, const QString &cardName, bool dontStackSameName) const;
96 [[nodiscard]] bool isColumnEmpty(int x, int y) const;
97 [[nodiscard]] bool isColumnStacked(int x, int y) const;
99 void moveCardInRow(GameEventStorage &ges, Server_Card *card, int x, int y);
100 void insertCard(Server_Card *card, int x, int y);
101 void updateCardCoordinates(Server_Card *card, int oldX, int oldY);
102 void shuffle(int start = 0, int end = -1);
103 void clear();
104 void addWritePermission(int playerId);
105 [[nodiscard]] const QSet<int> &getPlayersWithWritePermission() const
106 {
108 }
109 [[nodiscard]] bool getAlwaysRevealTopCard() const
110 {
111 return alwaysRevealTopCard;
112 }
113 void setAlwaysRevealTopCard(bool _alwaysRevealTopCard)
114 {
115 alwaysRevealTopCard = _alwaysRevealTopCard;
116 }
117 [[nodiscard]] bool getAlwaysLookAtTopCard() const
118 {
119 return alwaysLookAtTopCard;
120 }
121 void setAlwaysLookAtTopCard(bool _alwaysLookAtTopCard)
122 {
123 alwaysLookAtTopCard = _alwaysLookAtTopCard;
124 }
125};
126
127#endif
Definition server_response_containers.h:50
Definition remote_connection_controller.h:20
Definition game.h:18
Definition dlg_manage_sets.h:29
Definition server_abstract_participant.h:57
Definition server_abstract_player.h:25
void clear()
Definition server_cardzone.cpp:333
bool alwaysRevealTopCard
Definition server_cardzone.h:44
Server_AbstractPlayer * player
Definition server_cardzone.h:38
bool isCardAtPosLookedAt(int pos) const
Definition server_cardzone.cpp:195
bool has_coords
Definition server_cardzone.h:40
QString name
Definition server_cardzone.h:39
const QSet< int > & getPlayersWithWritePermission() const
Definition server_cardzone.h:105
QSet< int > playersWithWritePermission
Definition server_cardzone.h:43
ServerInfo_Zone::ZoneType getType() const
Definition server_cardzone.h:81
void insertCard(Server_Card *card, int x, int y)
Definition server_cardzone.cpp:316
int removeCard(Server_Card *card)
Definition server_cardzone.cpp:140
void setAlwaysLookAtTopCard(bool _alwaysLookAtTopCard)
Definition server_cardzone.h:121
bool getAlwaysLookAtTopCard() const
Definition server_cardzone.h:117
void setAlwaysRevealTopCard(bool _alwaysRevealTopCard)
Definition server_cardzone.h:113
void shuffle(int start=0, int end=-1)
Definition server_cardzone.cpp:53
Server_Card * getCard(int id, int *position=nullptr, bool remove=false)
Definition server_cardzone.cpp:162
void getInfo(ServerInfo_Zone *info, Server_AbstractParticipant *recipient, bool omniscient)
Definition server_cardzone.cpp:351
void insertCardIntoCoordMap(Server_Card *card, int x, int y)
Definition server_cardzone.cpp:114
bool isColumnStacked(int x, int y) const
Definition server_cardzone.cpp:245
int getCardsBeingLookedAt() const
Definition server_cardzone.h:68
const QList< Server_Card * > & getCards() const
Definition server_cardzone.h:60
int cardsBeingLookedAt
Definition server_cardzone.h:42
int getFreeGridColumn(int x, int y, const QString &cardName, bool dontStackSameName) const
Definition server_cardzone.cpp:200
QMap< int, QMap< int, Server_Card * > > coordinateMap
Definition server_cardzone.h:47
QString getName() const
Definition server_cardzone.h:85
Server_AbstractPlayer * getPlayer() const
Definition server_cardzone.h:89
void addWritePermission(int playerId)
Definition server_cardzone.cpp:346
bool getAlwaysRevealTopCard() const
Definition server_cardzone.h:109
void moveCardInRow(GameEventStorage &ges, Server_Card *card, int x, int y)
Definition server_cardzone.cpp:263
void fixFreeSpaces(GameEventStorage &ges)
Definition server_cardzone.cpp:271
QMap< int, int > freeSpaceMap
Definition server_cardzone.h:49
bool alwaysLookAtTopCard
Definition server_cardzone.h:45
void setCardsBeingLookedAt(int _cardsBeingLookedAt)
Definition server_cardzone.h:72
QMap< int, QMultiMap< QString, int > > freePilesMap
Definition server_cardzone.h:48
void removeCardFromCoordMap(Server_Card *card, int oldX, int oldY)
Definition server_cardzone.cpp:83
bool hasCoords() const
Definition server_cardzone.h:77
void updateCardCoordinates(Server_Card *card, int oldX, int oldY)
Definition server_cardzone.cpp:304
Server_CardZone(Server_AbstractPlayer *_player, const QString &_name, bool _has_coords, ServerInfo_Zone::ZoneType _type)
Definition server_cardzone.cpp:38
ServerInfo_Zone::ZoneType type
Definition server_cardzone.h:41
QList< Server_Card * > cards
Definition server_cardzone.h:46
bool isColumnEmpty(int x, int y) const
Definition server_cardzone.cpp:254
Definition server_card.h:39
Definition serverinfo_zone.proto:3
ZoneType
Definition serverinfo_zone.proto:4