Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_zone_logic.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_CARD_ZONE_LOGIC_H
8#define COCKATRICE_CARD_ZONE_LOGIC_H
9
11#include "../board/card_list.h"
12
13#include <QList>
14#include <QLoggingCategory>
15#include <QObject>
16#include <QString>
17#include <qtmetamacros.h>
18
19class CardItem;
20
21inline Q_LOGGING_CATEGORY(CardZoneLogicLog, "card_zone_logic");
22
23class PlayerLogic;
24class ZoneViewZone;
25
26class CardZoneLogic : public QObject
27{
28 Q_OBJECT
29
30signals:
31 void cardAdded(CardItem *addedCard);
35 void setGraphicsVisibility(bool visible);
37
38public:
39 explicit CardZoneLogic(PlayerLogic *_player,
40 const QString &_name,
41 bool _hasCardAttr,
42 bool _isShufflable,
43 bool _contentsKnown,
44 QObject *parent = nullptr);
45
46 void addCard(CardItem *card, bool reorganize, int x, int y = -1);
47 // getCard() finds a card by id.
48 CardItem *getCard(int cardId);
49 void removeCard(CardItem *card);
50 // takeCard() finds a card by position and removes it from the zone and from all of its views.
51 virtual CardItem *takeCard(int position, int cardId, bool canResize = true);
52
53 void rawInsertCard(CardItem *card, int index)
54 {
55 cards.insert(index, card);
56 }
57
58 [[nodiscard]] const CardList &getCards() const
59 {
60 return cards;
61 }
62
64 {
65 cards.sortBy(options);
66 }
67 [[nodiscard]] QString getName() const
68 {
69 return name;
70 }
71 [[nodiscard]] QString getTranslatedName(bool theirOwn, GrammaticalCase gc) const;
72 [[nodiscard]] PlayerLogic *getPlayer() const
73 {
74 return player;
75 }
76 [[nodiscard]] bool contentsKnown() const
77 {
78 return cards.getContentsKnown();
79 }
81 {
82 return views;
83 }
84 void setAlwaysRevealTopCard(bool _alwaysRevealTopCard)
85 {
86 alwaysRevealTopCard = _alwaysRevealTopCard;
87 }
88 [[nodiscard]] bool getAlwaysRevealTopCard() const
89 {
91 }
92 [[nodiscard]] bool getHasCardAttr() const
93 {
94 return hasCardAttr;
95 }
96 [[nodiscard]] bool getIsShufflable() const
97 {
98 return isShufflable;
99 }
100 void clearContents();
101
102public slots:
103 void moveAllToZone();
104
105private slots:
106 void refreshCardInfos();
107
108protected:
110 QString name;
116
117 virtual void addCardImpl(CardItem *card, int x, int y) = 0;
118};
119
120#endif // COCKATRICE_CARD_ZONE_LOGIC_H
Definition card_item.h:33
Definition card_list.h:20
bool getContentsKnown() const
Definition card_list.h:47
void sortBy(const QList< SortOption > &options)
sorts the list by using string comparison on properties extracted from the CardItem The cards are com...
Definition card_list.cpp:47
const CardList & getCards() const
Definition card_zone_logic.h:58
void setAlwaysRevealTopCard(bool _alwaysRevealTopCard)
Definition card_zone_logic.h:84
void refreshCardInfos()
Definition card_zone_logic.cpp:136
PlayerLogic * getPlayer() const
Definition card_zone_logic.h:72
void moveAllToZone()
Definition card_zone_logic.cpp:143
bool contentsKnown() const
Definition card_zone_logic.h:76
void reorganizeCards()
QString getName() const
Definition card_zone_logic.h:67
void rawInsertCard(CardItem *card, int index)
Definition card_zone_logic.h:53
void cardCountChanged()
bool getIsShufflable() const
Definition card_zone_logic.h:96
QList< ZoneViewZone * > & getViews()
Definition card_zone_logic.h:80
bool getHasCardAttr() const
Definition card_zone_logic.h:92
void updateGraphics()
CardZoneLogic(PlayerLogic *_player, const QString &_name, bool _hasCardAttr, bool _isShufflable, bool _contentsKnown, QObject *parent=nullptr)
Definition card_zone_logic.cpp:32
CardItem * getCard(int cardId)
Definition card_zone_logic.cpp:106
bool getAlwaysRevealTopCard() const
Definition card_zone_logic.h:88
void retranslateUi()
virtual void addCardImpl(CardItem *card, int x, int y)=0
void addCard(CardItem *card, bool reorganize, int x, int y=-1)
Definition card_zone_logic.cpp:47
QString name
Definition card_zone_logic.h:110
QList< ZoneViewZone * > views
Definition card_zone_logic.h:112
PlayerLogic * player
Definition card_zone_logic.h:109
void clearContents()
Definition card_zone_logic.cpp:165
bool hasCardAttr
Definition card_zone_logic.h:113
void cardAdded(CardItem *addedCard)
virtual CardItem * takeCard(int position, int cardId, bool canResize=true)
Definition card_zone_logic.cpp:74
CardList cards
Definition card_zone_logic.h:111
QString getTranslatedName(bool theirOwn, GrammaticalCase gc) const
Definition card_zone_logic.cpp:189
void sortCards(const QList< CardList::SortOption > &options)
Definition card_zone_logic.h:63
bool alwaysRevealTopCard
Definition card_zone_logic.h:115
void removeCard(CardItem *card)
Definition card_zone_logic.cpp:122
void setGraphicsVisibility(bool visible)
bool isShufflable
Definition card_zone_logic.h:114
Definition player_logic.h:56
Definition remote_connection_controller.h:20
Definition view_zone.h:47
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")
GrammaticalCase
Definition translation.h:5