Cockatrice 2026-06-01-Development-3.1.0-beta.3
A 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 PlayerLogic;
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 void handleArrowDeletionFinished(const Response &response, int arrowId);
65
66 void eventSpectatorSay(const Event_GameSay &event, int eventPlayerId, const GameEventContext &context);
67 void eventSpectatorLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context);
68
69 void eventGameStateChanged(const Event_GameStateChanged &event, int eventPlayerId, const GameEventContext &context);
70 void processCardAttachmentsForPlayers(const Event_GameStateChanged &event);
71 void eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &event,
72 int eventPlayerId,
73 const GameEventContext &context);
74 void eventJoin(const Event_Join &event, int eventPlayerId, const GameEventContext &context);
75 void eventLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context);
76 QString getLeaveReason(Event_Leave::LeaveReason reason);
77 void eventKicked(const Event_Kicked &event, int eventPlayerId, const GameEventContext &context);
78 void eventGameHostChanged(const Event_GameHostChanged &event, int eventPlayerId, const GameEventContext &context);
79 void eventGameClosed(const Event_GameClosed &event, int eventPlayerId, const GameEventContext &context);
80
81 void eventSetActivePlayer(const Event_SetActivePlayer &event, int eventPlayerId, const GameEventContext &context);
82 void eventSetActivePhase(const Event_SetActivePhase &event, int eventPlayerId, const GameEventContext &context);
83 void eventPing(const Event_Ping &event, int eventPlayerId, const GameEventContext &context);
84 void eventReverseTurn(const Event_ReverseTurn &event, int eventPlayerId, const GameEventContext & /*context*/);
85
86 void commandFinished(const Response &response);
87
88 void
89 processGameEventContainer(const GameEventContainer &cont, AbstractClient *client, EventProcessingOptions options);
90 PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd);
91 PendingCommand *prepareGameCommand(const QList<const ::google::protobuf::Message *> &cmdList);
92public slots:
93 void sendGameCommand(PendingCommand *pend, int playerId = -1);
94 void sendGameCommand(const ::google::protobuf::Message &command, int playerId = -1);
95
96signals:
98 void addPlayerToAutoCompleteList(QString playerName);
99 void localPlayerDeckSelected(PlayerLogic *localPlayer, int playerId, ServerInfo_Player playerInfo);
100 void remotePlayerDeckSelected(QString deckList, int playerId, QString playerName);
101 void remotePlayersDecksSelected(QVector<QPair<int, QPair<QString, QString>>> opponentDecks);
102 void localPlayerSideboardLocked(int playerId, bool sideboardLocked);
103 void localPlayerReadyStateChanged(int playerId, bool ready);
106 void playerPropertiesChanged(const ServerInfo_PlayerProperties &prop, int playerId);
107 void playerJoined(const ServerInfo_PlayerProperties &playerInfo);
108 void playerLeft(int leavingPlayerId);
110 void spectatorJoined(const ServerInfo_PlayerProperties &spectatorInfo);
111 void spectatorLeft(int leavingSpectatorId);
113 void containerProcessingStarted(GameEventContext context);
114 void setContextJudgeName(QString judgeName);
116 void arrowDeleted(int arrowId);
117 void logSpectatorSay(ServerInfo_User userInfo, QString message);
118 void logSpectatorLeave(QString name, QString reason);
122 void logDeckSelect(PlayerLogic *player, QString deckHash, int sideboardSize);
123 void logSideboardLockSet(PlayerLogic *player, bool sideboardLocked);
124 void logConnectionStateChanged(PlayerLogic *player, bool connected);
125 void logJoinSpectator(QString spectatorName);
127 void logLeave(PlayerLogic *player, QString reason);
128 void logKicked();
129 void logTurnReversed(PlayerLogic *player, bool reversed);
131 void logActivePlayer(PlayerLogic *activePlayer);
132 void logActivePhaseChanged(int activePhase);
133 void logConcede(int playerId);
134 void logUnconcede(int playerId);
135};
136
137#endif // COCKATRICE_GAME_EVENT_HANDLER_H
Definition abstract_client.h:51
Definition abstract_game.h:21
void handleNextTurn()
Definition game_event_handler.cpp:177
void processGameEventContainer(const GameEventContainer &cont, AbstractClient *client, EventProcessingOptions options)
Definition game_event_handler.cpp:87
void sendGameCommand(const ::google::protobuf::Message &command, int playerId=-1)
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:59
void containerProcessingDone()
void logUnconcede(int playerId)
void arrowDeleted(int arrowId)
void logTurnReversed(PlayerLogic *player, bool reversed)
PendingCommand * prepareGameCommand(const ::google::protobuf::Message &cmd)
Definition game_event_handler.cpp:66
void logLeave(PlayerLogic *player, QString reason)
GameEventHandler(AbstractGame *_game)
Definition game_event_handler.cpp:32
void eventReverseTurn(const Event_ReverseTurn &event, int eventPlayerId, const GameEventContext &)
Definition game_event_handler.cpp:486
void logNotReadyStart(PlayerLogic *player)
void eventGameClosed(const Event_GameClosed &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:505
void addPlayerToAutoCompleteList(QString playerName)
void handleActiveLocalPlayerConceded()
Definition game_event_handler.cpp:187
void handleArrowDeletion(int arrowId)
Definition game_event_handler.cpp:216
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:244
void handleArrowDeletionFinished(const Response &response, int arrowId)
Definition game_event_handler.cpp:229
void setContextJudgeName(QString judgeName)
void logReadyStart(PlayerLogic *player)
void remotePlayerDeckSelected(QString deckList, int playerId, QString playerName)
void playerPropertiesChanged(const ServerInfo_PlayerProperties &prop, int playerId)
void logConcede(int playerId)
void playerLeft(int leavingPlayerId)
void logSpectatorSay(ServerInfo_User userInfo, QString message)
void logActivePhaseChanged(int activePhase)
void logConnectionStateChanged(PlayerLogic *player, bool connected)
void eventGameStateChanged(const Event_GameStateChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:257
void containerProcessingStarted(GameEventContext context)
void logDeckSelect(PlayerLogic *player, QString deckHash, int sideboardSize)
void eventLeave(const Event_Leave &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:451
void handleReverseTurn()
Definition game_event_handler.cpp:182
void eventSetActivePlayer(const Event_SetActivePlayer &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:516
void handleActiveLocalPlayerUnconceded()
Definition game_event_handler.cpp:192
void eventKicked(const Event_Kicked &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:476
void eventJoin(const Event_Join &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:409
void localPlayerDeckSelected(PlayerLogic *localPlayer, int playerId, ServerInfo_Player playerInfo)
void spectatorJoined(const ServerInfo_PlayerProperties &spectatorInfo)
void sendGameCommand(PendingCommand *pend, int playerId=-1)
Definition game_event_handler.cpp:36
void logSideboardLockSet(PlayerLogic *player, bool sideboardLocked)
QString getLeaveReason(Event_Leave::LeaveReason reason)
Definition game_event_handler.cpp:433
void eventGameHostChanged(const Event_GameHostChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:498
void handleChatMessageSent(const QString &chatMessage)
Definition game_event_handler.cpp:209
void eventSetActivePhase(const Event_SetActivePhase &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:529
void localPlayerSideboardLocked(int playerId, bool sideboardLocked)
void spectatorLeft(int leavingSpectatorId)
void processCardAttachmentsForPlayers(const Event_GameStateChanged &event)
Definition game_event_handler.cpp:320
void logJoinPlayer(PlayerLogic *player)
void eventPlayerPropertiesChanged(const Event_PlayerPropertiesChanged &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:335
void logJoinSpectator(QString spectatorName)
void handleGameLeft()
Definition game_event_handler.cpp:204
void playerJoined(const ServerInfo_PlayerProperties &playerInfo)
AbstractGame * game
Definition game_event_handler.h:50
void eventSpectatorSay(const Event_GameSay &event, int eventPlayerId, const GameEventContext &context)
Definition game_event_handler.cpp:236
void handleActivePhaseChanged(int phase)
Definition game_event_handler.cpp:197
void logActivePlayer(PlayerLogic *activePlayer)
Definition game_state.h:18
Definition message_log_widget.h:20
Definition pending_command.h:15
Definition player_logic.h:65
Q_LOGGING_CATEGORY(GameEventHandlerLog, "game_event_handler")