Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
player_manager.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_PLAYER_MANAGER_H
8#define COCKATRICE_PLAYER_MANAGER_H
9
10#include <QMap>
11#include <QObject>
12#include <libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h>
13
14class AbstractGame;
15class Player;
16class PlayerManager : public QObject
17{
18 Q_OBJECT
19
20public:
21 PlayerManager(AbstractGame *_game, int _localPlayerId, bool _localPlayerIsJudge, bool localPlayerIsSpectator);
22
24 QMap<int, Player *> players;
28 QMap<int, ServerInfo_User> spectators;
29
30 [[nodiscard]] bool isSpectator() const
31 {
33 }
34
35 [[nodiscard]] bool isJudge() const
36 {
37 return localPlayerIsJudge;
38 }
39
40 [[nodiscard]] int getLocalPlayerId() const
41 {
42 return localPlayerId;
43 }
44
45 [[nodiscard]] const QMap<int, Player *> &getPlayers() const
46 {
47 return players;
48 }
49
50 [[nodiscard]] int getPlayerCount() const
51 {
52 return players.size();
53 }
54
55 [[nodiscard]] Player *getActiveLocalPlayer(int activePlayer) const;
56 bool isLocalPlayer(int playerId);
57
58 Player *addPlayer(int playerId, const ServerInfo_User &info);
59
60 void removePlayer(int playerId);
61
62 [[nodiscard]] Player *getPlayer(int playerId) const;
63
64 void onPlayerConceded(int playerId, bool conceded);
65
66 [[nodiscard]] bool isMainPlayerConceded() const;
67
68 [[nodiscard]] bool isLocalPlayer(int playerId) const
69 {
70 return playerId == getLocalPlayerId();
71 }
72
73 [[nodiscard]] const QMap<int, ServerInfo_User> &getSpectators() const
74 {
75 return spectators;
76 }
77
78 [[nodiscard]] ServerInfo_User getSpectator(int playerId) const
79 {
80 return spectators.value(playerId);
81 }
82
83 [[nodiscard]] QString getSpectatorName(int spectatorId) const
84 {
85 return QString::fromStdString(spectators.value(spectatorId).name());
86 }
87
88 void addSpectator(int spectatorId, const ServerInfo_PlayerProperties &prop)
89 {
90 if (!spectators.contains(spectatorId)) {
91 spectators.insert(spectatorId, prop.user_info());
92 emit spectatorAdded(prop);
93 }
94 }
95
96 void removeSpectator(int spectatorId)
97 {
98 ServerInfo_User spectatorInfo = spectators.value(spectatorId);
99 spectators.remove(spectatorId);
100 emit spectatorRemoved(spectatorId, spectatorInfo);
101 }
102
103 [[nodiscard]] AbstractGame *getGame() const
104 {
105 return game;
106 }
107
108signals:
109 void playerAdded(Player *player);
110 void playerRemoved(Player *player);
113 void playerConceded(int playerId);
114 void playerUnconceded(int playerId);
116 void spectatorAdded(ServerInfo_PlayerProperties spectator);
117 void spectatorRemoved(int spectatorId, ServerInfo_User spectator);
118};
119
120#endif // COCKATRICE_PLAYER_MANAGER_H
Definition abstract_game.h:21
bool localPlayerIsSpectator
Definition player_manager.h:27
bool isJudge() const
Definition player_manager.h:35
void addSpectator(int spectatorId, const ServerInfo_PlayerProperties &prop)
Definition player_manager.h:88
QString getSpectatorName(int spectatorId) const
Definition player_manager.h:83
Player * getPlayer(int playerId) const
Definition player_manager.cpp:66
const QMap< int, Player * > & getPlayers() const
Definition player_manager.h:45
AbstractGame * game
Definition player_manager.h:23
Player * getActiveLocalPlayer(int activePlayer) const
Definition player_manager.cpp:21
Player * addPlayer(int playerId, const ServerInfo_User &info)
Definition player_manager.cpp:43
void onPlayerConceded(int playerId, bool conceded)
Definition player_manager.cpp:74
void playerUnconceded(int playerId)
int getPlayerCount() const
Definition player_manager.h:50
void playerAdded(Player *player)
ServerInfo_User getSpectator(int playerId) const
Definition player_manager.h:78
void activeLocalPlayerUnconceded()
int getLocalPlayerId() const
Definition player_manager.h:40
void playerConceded(int playerId)
QMap< int, Player * > players
Definition player_manager.h:24
void spectatorAdded(ServerInfo_PlayerProperties spectator)
AbstractGame * getGame() const
Definition player_manager.h:103
void removePlayer(int playerId)
Definition player_manager.cpp:54
QMap< int, ServerInfo_User > spectators
Definition player_manager.h:28
void activeLocalPlayerConceded()
bool isSpectator() const
Definition player_manager.h:30
PlayerManager(AbstractGame *_game, int _localPlayerId, bool _localPlayerIsJudge, bool localPlayerIsSpectator)
Definition player_manager.cpp:6
bool localPlayerIsJudge
Definition player_manager.h:26
bool isMainPlayerConceded() const
Definition player_manager.cpp:15
bool isLocalPlayer(int playerId)
Definition player_manager.cpp:38
void playerRemoved(Player *player)
void removeSpectator(int spectatorId)
Definition player_manager.h:96
bool isLocalPlayer(int playerId) const
Definition player_manager.h:68
int localPlayerId
Definition player_manager.h:25
const QMap< int, ServerInfo_User > & getSpectators() const
Definition player_manager.h:73
void spectatorRemoved(int spectatorId, ServerInfo_User spectator)
void playerCountChanged()
Definition player.h:65