Cockatrice 2026-10-19-Development-3.1.2-beta.2
A 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 "libcockatrice/protocol/pb/serverinfo_user.pb.h"
11
12#include <QMap>
13#include <QObject>
14#include <QString>
15#include <libcockatrice/protocol/pb/serverinfo_playerproperties.pb.h>
16#include <qtmetamacros.h>
17
18class AbstractGame;
19class PlayerLogic;
20
21class PlayerManager : public QObject
22{
23 Q_OBJECT
24
25public:
26 PlayerManager(AbstractGame *_game, int _localPlayerId, bool _localPlayerIsJudge, bool localPlayerIsSpectator);
27
34
35 [[nodiscard]] bool isSpectator() const
36 {
38 }
39
40 [[nodiscard]] bool isJudge() const
41 {
42 return localPlayerIsJudge;
43 }
44
45 [[nodiscard]] int getLocalPlayerId() const
46 {
47 return localPlayerId;
48 }
49
50 [[nodiscard]] const QMap<int, PlayerLogic *> &getPlayers() const
51 {
52 return players;
53 }
54
55 [[nodiscard]] int getPlayerCount() const
56 {
57 return players.size();
58 }
59
60 [[nodiscard]] PlayerLogic *getActiveLocalPlayer(int activePlayer) const;
61 bool isLocalPlayer(int playerId);
62
63 PlayerLogic *addPlayer(int playerId, const ServerInfo_User &info);
64
65 void removePlayer(int playerId);
66
67 [[nodiscard]] PlayerLogic *getPlayer(int playerId) const;
68
69 void onPlayerConceded(int playerId, bool conceded);
70
71 [[nodiscard]] bool isMainPlayerConceded() const;
72
73 [[nodiscard]] bool isLocalPlayer(int playerId) const
74 {
75 return playerId == getLocalPlayerId();
76 }
77
78 [[nodiscard]] const QMap<int, ServerInfo_User> &getSpectators() const
79 {
80 return spectators;
81 }
82
83 [[nodiscard]] ServerInfo_User getSpectator(int playerId) const
84 {
85 return spectators.value(playerId);
86 }
87
88 [[nodiscard]] QString getSpectatorName(int spectatorId) const
89 {
90 return QString::fromStdString(spectators.value(spectatorId).name());
91 }
92
93 void addSpectator(int spectatorId, const ServerInfo_PlayerProperties &prop)
94 {
95 if (!spectators.contains(spectatorId)) {
96 spectators.insert(spectatorId, prop.user_info());
97 emit spectatorAdded(prop);
98 }
99 }
100
101 void removeSpectator(int spectatorId)
102 {
103 ServerInfo_User spectatorInfo = spectators.value(spectatorId);
104 spectators.remove(spectatorId);
105 emit spectatorRemoved(spectatorId, spectatorInfo);
106 }
107
109 void clearSpectators();
110
111 [[nodiscard]] AbstractGame *getGame() const
112 {
113 return game;
114 }
115
116signals:
121 void playerConceded(int playerId);
122 void playerUnconceded(int playerId);
125 void spectatorRemoved(int spectatorId, ServerInfo_User spectator);
126};
127
128#endif // COCKATRICE_PLAYER_MANAGER_H
Definition abstract_game.h:23
Definition player_logic.h:56
bool localPlayerIsSpectator
Definition player_manager.h:32
bool isJudge() const
Definition player_manager.h:40
const QMap< int, PlayerLogic * > & getPlayers() const
Definition player_manager.h:50
void addSpectator(int spectatorId, const ServerInfo_PlayerProperties &prop)
Definition player_manager.h:93
QString getSpectatorName(int spectatorId) const
Definition player_manager.h:88
AbstractGame * game
Definition player_manager.h:28
void onPlayerConceded(int playerId, bool conceded)
Definition player_manager.cpp:92
void playerUnconceded(int playerId)
int getPlayerCount() const
Definition player_manager.h:55
ServerInfo_User getSpectator(int playerId) const
Definition player_manager.h:83
void activeLocalPlayerUnconceded()
int getLocalPlayerId() const
Definition player_manager.h:45
void playerConceded(int playerId)
void spectatorAdded(ServerInfo_PlayerProperties spectator)
AbstractGame * getGame() const
Definition player_manager.h:111
void removePlayer(int playerId)
Definition player_manager.cpp:63
void clearSpectators()
Remove all spectators, emitting the removal signal for each.
Definition player_manager.cpp:84
QMap< int, ServerInfo_User > spectators
Definition player_manager.h:33
void activeLocalPlayerConceded()
bool isSpectator() const
Definition player_manager.h:35
void playerRemoved(PlayerLogic *player)
PlayerManager(AbstractGame *_game, int _localPlayerId, bool _localPlayerIsJudge, bool localPlayerIsSpectator)
Definition player_manager.cpp:12
bool localPlayerIsJudge
Definition player_manager.h:31
bool isMainPlayerConceded() const
Definition player_manager.cpp:21
bool isLocalPlayer(int playerId)
Definition player_manager.cpp:47
PlayerLogic * getPlayer(int playerId) const
Definition player_manager.cpp:75
QMap< int, PlayerLogic * > players
Definition player_manager.h:29
PlayerLogic * getActiveLocalPlayer(int activePlayer) const
Definition player_manager.cpp:27
void playerAdded(PlayerLogic *player)
void removeSpectator(int spectatorId)
Definition player_manager.h:101
bool isLocalPlayer(int playerId) const
Definition player_manager.h:73
int localPlayerId
Definition player_manager.h:30
const QMap< int, ServerInfo_User > & getSpectators() const
Definition player_manager.h:78
void spectatorRemoved(int spectatorId, ServerInfo_User spectator)
PlayerLogic * addPlayer(int playerId, const ServerInfo_User &info)
Definition player_manager.cpp:52
void playerCountChanged()
Definition game.h:18
Definition serverinfo_playerproperties.proto:3
optional ServerInfo_User user_info
Definition serverinfo_playerproperties.proto:13
Definition serverinfo_user.proto:2