Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
game_event_handler.h
Go to the documentation of this file.
1
6
7#ifndef COCKATRICE_GAME_EVENT_HANDLER_H
8#define COCKATRICE_GAME_EVENT_HANDLER_H
9
11
12#include <QLoggingCategory>
13#include <QObject>
14#include <libcockatrice/protocol/pb/event_leave.pb.h>
15#include <libcockatrice/protocol/pb/serverinfo_player.pb.h>
16
17class AbstractClient;
18class Response;
19class GameEventContainer;
20class GameEventContext;
21class GameCommand;
22class GameState;
24class CommandContainer;
25class Event_GameJoined;
26class Event_GameStateChanged;
27class Event_PlayerPropertiesChanged;
28class Event_Join;
29class Event_Leave;
30class Event_GameHostChanged;
31class Event_GameClosed;
32class Event_GameStart;
33class Event_SetActivePlayer;
34class Event_SetActivePhase;
35class Event_Ping;
36class Event_GameSay;
37class Event_Kicked;
38class Event_ReverseTurn;
39class AbstractGame;
40class PendingCommand;
41class Player;
42
43inline Q_LOGGING_CATEGORY(GameEventHandlerLog, "game_event_handler");
44
45class GameEventHandler : public QObject
46{
47 Q_OBJECT
48
49private:
51
52public:
53 explicit GameEventHandler(AbstractGame *_game);
54
55 void handleNextTurn();
56 void handleReverseTurn();
57
60 void handleActivePhaseChanged(int phase);
61 void handleGameLeft();
62 void handleChatMessageSent(const QString &chatMessage);
63 void handleArrowDeletion(int arrowId);
64
65 void eventSpectatorSay(const Event_GameSay &event, int eventPlayerId, const GameEventContext &context);
66 void eventSpectatorLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context);
67
68 void eventGameStateChanged(const Event_GameStateChanged &event, int eventPlayerId, const GameEventContext &context);
69 void processCardAttachmentsForPlayers(const Event_GameStateChanged &event);
70 void eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &event,
71 int eventPlayerId,
72 const GameEventContext &context);
73 void eventJoin(const Event_Join &event, int eventPlayerId, const GameEventContext &context);
74 void eventLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context);
75 QString getLeaveReason(Event_Leave::LeaveReason reason);
76 void eventKicked(const Event_Kicked &event, int eventPlayerId, const GameEventContext &context);
77 void eventGameHostChanged(const Event_GameHostChanged &event, int eventPlayerId, const GameEventContext &context);
78 void eventGameClosed(const Event_GameClosed &event, int eventPlayerId, const GameEventContext &context);
79
80 void eventSetActivePlayer(const Event_SetActivePlayer &event, int eventPlayerId, const GameEventContext &context);
81 void eventSetActivePhase(const Event_SetActivePhase &event, int eventPlayerId, const GameEventContext &context);
82 void eventPing(const Event_Ping &event, int eventPlayerId, const GameEventContext &context);
83 void eventReverseTurn(const Event_ReverseTurn &event, int eventPlayerId, const GameEventContext & /*context*/);
84
85 void commandFinished(const Response &response);
86
87 void
88 processGameEventContainer(const GameEventContainer &cont, AbstractClient *client, EventProcessingOptions options);
89 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
90 PendingCommand *prepareGameCommand(const QList<const ::google::protobuf::Message *> &cmdList);
91public slots:
92 void sendGameCommand(PendingCommand *pend, int playerId = -1);
93 void sendGameCommand(const ::google::protobuf::Message &command, int playerId = -1);
94
95signals:
97 void addPlayerToAutoCompleteList(QString playerName);
98 void localPlayerDeckSelected(Player *localPlayer, int playerId, ServerInfo_Player playerInfo);
99 void remotePlayerDeckSelected(QString deckList, int playerId, QString playerName);
100 void remotePlayersDecksSelected(QVector<QPair<int, QPair<QString, QString>>> opponentDecks);
101 void localPlayerSideboardLocked(int playerId, bool sideboardLocked);
102 void localPlayerReadyStateChanged(int playerId, bool ready);
105 void playerPropertiesChanged(const ServerInfo_PlayerProperties &prop, int playerId);
106 void playerJoined(const ServerInfo_PlayerProperties &playerInfo);
107 void playerLeft(int leavingPlayerId);
109 void spectatorJoined(const ServerInfo_PlayerProperties &spectatorInfo);
110 void spectatorLeft(int leavingSpectatorId);
112 void containerProcessingStarted(GameEventContext context);
113 void setContextJudgeName(QString judgeName);
115 void logSpectatorSay(ServerInfo_User userInfo, QString message);
116 void logSpectatorLeave(QString name, QString reason);
118 void logReadyStart(Player *player);
120 void logDeckSelect(Player *player, QString deckHash, int sideboardSize);
121 void logSideboardLockSet(Player *player, bool sideboardLocked);
122 void logConnectionStateChanged(Player *player, bool connected);
123 void logJoinSpectator(QString spectatorName);
124 void logJoinPlayer(Player *player);
125 void logLeave(Player *player, QString reason);
126 void logKicked();
127 void logTurnReversed(Player *player, bool reversed);
129 void logActivePlayer(Player *activePlayer);
130 void logActivePhaseChanged(int activePhase);
131 void logConcede(int playerId);
132 void logUnconcede(int playerId);
133};
134
135#endif // COCKATRICE_GAME_EVENT_HANDLER_H
Definition abstract_client.h:51
Definition abstract_game.h:21
void handleNextTurn()
Definition game_event_handler.cpp:172
void processGameEventContainer(const GameEventContainer &cont, AbstractClient *client, EventProcessingOptions options)
Definition game_event_handler.cpp:84
void sendGameCommand(const ::google::protobuf::Message &command, int playerId=-1)
void logReadyStart(Player *player)
void remotePlayersDecksSelected(QVector< QPair< int, QPair< QString, QString > > > opponentDecks)
void localPlayerReadyStateChanged(int playerId, bool ready)
void logSpectatorLeave(QString name, QString reason)
void commandFinished(const Response &response)
Definition game_event_handler.cpp:57
void containerProcessingDone()
void logUnconcede(int playerId)
void localPlayerDeckSelected(Player *localPlayer, int playerId, ServerInfo_Player playerInfo)
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
Definition game_event_handler.cpp:63
GameEventHandler(AbstractGame *_game)
Definition game_event_handler.cpp:32
void logJoinPlayer(Player *player)
void eventReverseTurn(const Event_ReverseTurn &event, int eventPlayerId, const GameEventContext &)
Definition game_event_handler.cpp:459
void logConnectionStateChanged(Player *player, bool connected)
void eventGameClosed(const Event_GameClosed &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:477
void addPlayerToAutoCompleteList(QString playerName)
void handleActiveLocalPlayerConceded()
Definition game_event_handler.cpp:182
void handleArrowDeletion(int arrowId)
Definition game_event_handler.cpp:211
void eventPing(const Event_Ping &event, int eventPlayerId, const GameEventContext &context)
void eventSpectatorLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:226
void setContextJudgeName(QString judgeName)
void logActivePlayer(Player *activePlayer)
void remotePlayerDeckSelected(QString deckList, int playerId, QString playerName)
void playerPropertiesChanged(const ServerInfo_PlayerProperties &prop, int playerId)
void logConcede(int playerId)
void logTurnReversed(Player *player, bool reversed)
void playerLeft(int leavingPlayerId)
void logSpectatorSay(ServerInfo_User userInfo, QString message)
void logActivePhaseChanged(int activePhase)
void eventGameStateChanged(const Event_GameStateChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:239
void containerProcessingStarted(GameEventContext context)
void eventLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:426
void handleReverseTurn()
Definition game_event_handler.cpp:177
void eventSetActivePlayer(const Event_SetActivePlayer &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:488
void handleActiveLocalPlayerUnconceded()
Definition game_event_handler.cpp:187
void eventKicked(const Event_Kicked &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:449
void eventJoin(const Event_Join &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:385
void spectatorJoined(const ServerInfo_PlayerProperties &spectatorInfo)
void sendGameCommand(PendingCommand *pend, int playerId=-1)
Definition game_event_handler.cpp:36
QString getLeaveReason(Event_Leave::LeaveReason reason)
Definition game_event_handler.cpp:408
void eventGameHostChanged(const Event_GameHostChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:470
void handleChatMessageSent(const QString &chatMessage)
Definition game_event_handler.cpp:204
void eventSetActivePhase(const Event_SetActivePhase &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:500
void localPlayerSideboardLocked(int playerId, bool sideboardLocked)
void spectatorLeft(int leavingSpectatorId)
void logSideboardLockSet(Player *player, bool sideboardLocked)
void processCardAttachmentsForPlayers(const Event_GameStateChanged &event)
Definition game_event_handler.cpp:301
void logDeckSelect(Player *player, QString deckHash, int sideboardSize)
void eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:315
void logJoinSpectator(QString spectatorName)
void handleGameLeft()
Definition game_event_handler.cpp:199
void playerJoined(const ServerInfo_PlayerProperties &playerInfo)
AbstractGame * game
Definition game_event_handler.h:50
void logLeave(Player *player, QString reason)
void eventSpectatorSay(const Event_GameSay &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:218
void handleActivePhaseChanged(int phase)
Definition game_event_handler.cpp:192
void logNotReadyStart(Player *player)
Definition game_state.h:18
Definition message_log_widget.h:20
Definition pending_command.h:15
Definition player.h:65
TODO: Document this.
Q_LOGGING_CATEGORY(GameEventHandlerLog, "game_event_handler")