From 7c7e0a2652d1b4d51666355fa829676b9fb5a678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sun, 7 Sep 2025 14:57:47 +0200 Subject: [PATCH] Hook up the message log widgets to game events again. Took 33 minutes Took 7 seconds --- cockatrice/src/client/tabs/tab_game.cpp | 39 ++++++++++++++++ cockatrice/src/client/tabs/tab_game.h | 1 + cockatrice/src/game/game_event_handler.cpp | 47 ++++++-------------- cockatrice/src/game/game_event_handler.h | 22 ++++----- cockatrice/src/server/message_log_widget.cpp | 5 +++ cockatrice/src/server/message_log_widget.h | 1 + 6 files changed, 70 insertions(+), 45 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index 1b404c88c..3055b16f4 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -121,6 +121,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, createCardInfoDock(); createPlayerListDock(); createMessageDock(); + connectMessageLogToGameEventHandler(); createPlayAreaWidget(); createDeckViewContainerWidget(); createReplayDock(nullptr); @@ -150,6 +151,44 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QTimer::singleShot(0, this, &TabGame::loadLayout); } +void TabGame::connectMessageLogToGameEventHandler() +{ + // connect(gameEventHandler, &GameEventHandler:: , messageLog, &MessageLogWidget::); + connect(gameEventHandler, &GameEventHandler::gameFlooded, messageLog, &MessageLogWidget::logGameFlooded); + connect(gameEventHandler, &GameEventHandler::containerProcessingStarted, messageLog, + &MessageLogWidget::containerProcessingStarted); + connect(gameEventHandler, &GameEventHandler::containerProcessingDone, messageLog, + &MessageLogWidget::containerProcessingDone); + connect(gameEventHandler, &GameEventHandler::setContextJudgeName, messageLog, + &MessageLogWidget::setContextJudgeName); + connect(gameEventHandler, &GameEventHandler::logSpectatorSay, messageLog, &MessageLogWidget::logSpectatorSay); + + connect(gameEventHandler, &GameEventHandler::logJoinPlayer, messageLog, &MessageLogWidget::logJoin); + connect(gameEventHandler, &GameEventHandler::logJoinSpectator, messageLog, &MessageLogWidget::logJoinSpectator); + connect(gameEventHandler, &GameEventHandler::logLeave, messageLog, &MessageLogWidget::logLeave); + connect(gameEventHandler, &GameEventHandler::logKicked, messageLog, &MessageLogWidget::logKicked); + connect(gameEventHandler, &GameEventHandler::logConnectionStateChanged, messageLog, + &MessageLogWidget::logConnectionStateChanged); + + connect(gameEventHandler, &GameEventHandler::logDeckSelect, messageLog, &MessageLogWidget::logDeckSelect); + connect(gameEventHandler, &GameEventHandler::logSideboardLockSet, messageLog, + &MessageLogWidget::logSetSideboardLock); + connect(gameEventHandler, &GameEventHandler::logReadyStart, messageLog, &MessageLogWidget::logReadyStart); + connect(gameEventHandler, &GameEventHandler::logNotReadyStart, messageLog, &MessageLogWidget::logNotReadyStart); + connect(gameEventHandler, &GameEventHandler::logGameStart, messageLog, &MessageLogWidget::logGameStart); + + connect(gameEventHandler, &GameEventHandler::playerConceded, messageLog, &MessageLogWidget::logConcede); + connect(gameEventHandler, &GameEventHandler::playerUnconceded, messageLog, &MessageLogWidget::logUnconcede); + + connect(gameEventHandler, &GameEventHandler::logActivePlayer, messageLog, &MessageLogWidget::logSetActivePlayer); + connect(gameEventHandler, &GameEventHandler::logActivePhaseChanged, messageLog, + &MessageLogWidget::logSetActivePhase); + + connect(gameEventHandler, &GameEventHandler::logTurnReversed, messageLog, &MessageLogWidget::logReverseTurn); + + connect(gameEventHandler, &GameEventHandler::logGameClosed, messageLog, &MessageLogWidget::logGameClosed); +} + void TabGame::loadReplay(GameReplay *replay) { gameMetaInfo->setFromProto(replay->game_info()); diff --git a/cockatrice/src/client/tabs/tab_game.h b/cockatrice/src/client/tabs/tab_game.h index 35b7098a4..9f2881d49 100644 --- a/cockatrice/src/client/tabs/tab_game.h +++ b/cockatrice/src/client/tabs/tab_game.h @@ -173,6 +173,7 @@ public: QList &_clients, const Event_GameJoined &event, const QMap &_roomGameTypes); + void connectMessageLogToGameEventHandler(); void loadReplay(GameReplay *replay); TabGame(TabSupervisor *_tabSupervisor, GameReplay *replay); ~TabGame() override; diff --git a/cockatrice/src/game/game_event_handler.cpp b/cockatrice/src/game/game_event_handler.cpp index 8f6b6db52..a64487a2f 100644 --- a/cockatrice/src/game/game_event_handler.cpp +++ b/cockatrice/src/game/game_event_handler.cpp @@ -57,7 +57,6 @@ void GameEventHandler::commandFinished(const Response &response) { if (response.response_code() == Response::RespChatFlood) emit gameFlooded(); - // messageLog->appendMessage(tr("You are flooding the game. Please wait a couple of seconds.")); } PendingCommand *GameEventHandler::prepareGameCommand(const ::google::protobuf::Message &cmd) @@ -87,7 +86,7 @@ void GameEventHandler::processGameEventContainer(const GameEventContainer &cont, { const GameEventContext &context = cont.context(); emit containerProcessingStarted(context); - // messageLog->containerProcessingStarted(context); + const int eventListSize = cont.event_list_size(); for (int i = 0; i < eventListSize; ++i) { const GameEvent &event = cont.event_list(i); @@ -98,11 +97,9 @@ void GameEventHandler::processGameEventContainer(const GameEventContainer &cont, auto id = cont.forced_by_judge(); Player *judgep = gameState->getPlayers().value(id, nullptr); if (judgep) { - emit setContextJudgeName(); - // messageLog->setContextJudgeName(judgep->getName()); + emit setContextJudgeName(judgep->getName()); } else if (gameState->getSpectators().contains(id)) { - emit setContextJudgeName(); - // messageLog->setContextJudgeName(QString::fromStdString(gameState->getSpectators().value(id).name())); + emit setContextJudgeName(QString::fromStdString(gameState->getSpectators().value(id).name())); } } @@ -178,7 +175,6 @@ void GameEventHandler::processGameEventContainer(const GameEventContainer &cont, } } emit containerProcessingDone(); - // messageLog->containerProcessingDone(); } void GameEventHandler::handleNextTurn() @@ -233,7 +229,6 @@ void GameEventHandler::eventSpectatorSay(const Event_GameSay &event, { const ServerInfo_User &userInfo = gameState->getSpectators().value(eventPlayerId); emit logSpectatorSay(userInfo, QString::fromStdString(event.message())); - // messageLog->logSpectatorSay(userInfo, QString::fromStdString(event.message())); } void GameEventHandler::eventSpectatorLeave(const Event_Leave &event, @@ -293,7 +288,6 @@ void GameEventHandler::eventGameStateChanged(const Event_GameStateChanged &event game->getGameMetaInfo()->setStarted(event.game_started()); if (gameState->isGameStateKnown()) emit logGameStart(); - // messageLog->logGameStart(); gameState->setActivePlayer(event.active_player_id()); gameState->setCurrentPhase(event.active_phase()); } else if (!event.game_started() && game->getGameMetaInfo()->started()) { @@ -337,18 +331,14 @@ void GameEventHandler::eventPlayerPropertiesChanged(const Event_PlayerProperties if (player->getLocal()) emit localPlayerReadyStateChanged(player->getId(), ready); if (ready) { - emit logReadyStart(); - // messageLog->logReadyStart(player); + emit logReadyStart(player); } else { - emit logNotReadyStart(); - // emit logNotReadyStart(player); - // messageLog->logNotReadyStart(player); + emit logNotReadyStart(player); } break; } case GameEventContext::CONCEDE: { - emit playerConceded(); - // messageLog->logConcede(player); + emit playerConceded(player); player->setConceded(true); QMapIterator playerIterator(gameState->getPlayers()); @@ -358,8 +348,7 @@ void GameEventHandler::eventPlayerPropertiesChanged(const Event_PlayerProperties break; } case GameEventContext::UNCONCEDE: { - emit playerUnconceded(); - // messageLog->logUnconcede(player); + emit playerUnconceded(player); player->setConceded(false); QMapIterator playerIterator(gameState->getPlayers()); @@ -370,9 +359,7 @@ void GameEventHandler::eventPlayerPropertiesChanged(const Event_PlayerProperties } case GameEventContext::DECK_SELECT: { Context_DeckSelect deckSelect = context.GetExtension(Context_DeckSelect::ext); - emit logDeckSelect(); - /*messageLog->logDeckSelect(player, QString::fromStdString(deckSelect.deck_hash()), - deckSelect.sideboard_size());*/ + emit logDeckSelect(player, QString::fromStdString(deckSelect.deck_hash()), deckSelect.sideboard_size()); if (game->getGameMetaInfo()->proto().share_decklists_on_load() && deckSelect.has_deck_list() && eventPlayerId != gameState->getLocalPlayerId()) { emit remotePlayerDeckSelected(QString::fromStdString(deckSelect.deck_list()), eventPlayerId, @@ -384,13 +371,11 @@ void GameEventHandler::eventPlayerPropertiesChanged(const Event_PlayerProperties if (player->getLocal()) { emit localPlayerSideboardLocked(player->getId(), prop.sideboard_locked()); } - emit logSideboardLockSet(); - // messageLog->logSetSideboardLock(player, prop.sideboard_locked()); + emit logSideboardLockSet(player, prop.sideboard_locked()); break; } case GameEventContext::CONNECTION_STATE_CHANGED: { - // messageLog->logConnectionStateChanged(player, prop.ping_seconds() != -1); - emit logConnectionStateChanged(); + emit logConnectionStateChanged(player, prop.ping_seconds() != -1); break; } default:; @@ -409,8 +394,7 @@ void GameEventHandler::eventJoin(const Event_Join &event, int /*eventPlayerId*/, if (playerInfo.spectator()) { gameState->addSpectator(playerId, playerInfo); - // messageLog->logJoinSpectator(playerName); - emit logJoinSpectator(); + emit logJoinSpectator(playerName); } else { Player *newPlayer = gameState->addPlayer(playerId, playerInfo.user_info(), game); emit logJoinPlayer(newPlayer); @@ -468,8 +452,6 @@ void GameEventHandler::eventKicked(const Event_Kicked & /*event*/, emit logKicked(); - // messageLog->logKicked(); - emit playerKicked(); game->emitUserEvent(); @@ -501,7 +483,6 @@ void GameEventHandler::eventGameClosed(const Event_GameClosed & /*event*/, gameState->setGameClosed(true); emit gameClosed(); emit logGameClosed(); - // messageLog->logGameClosed(); game->emitUserEvent(); } @@ -513,8 +494,7 @@ void GameEventHandler::eventSetActivePlayer(const Event_SetActivePlayer &event, Player *player = gameState->getPlayer(event.active_player_id()); if (!player) return; - emit logActivePlayer(); - // messageLog->logSetActivePlayer(player); + emit logActivePlayer(player); game->emitUserEvent(); } @@ -524,9 +504,8 @@ void GameEventHandler::eventSetActivePhase(const Event_SetActivePhase &event, { const int phase = event.phase(); if (gameState->getCurrentPhase() != phase) { - emit logActivePhaseChanged(); + emit logActivePhaseChanged(phase); } - // messageLog->logSetActivePhase(phase); gameState->setCurrentPhase(phase); game->emitUserEvent(); } \ No newline at end of file diff --git a/cockatrice/src/game/game_event_handler.h b/cockatrice/src/game/game_event_handler.h index 3ca741c2b..e1ef72166 100644 --- a/cockatrice/src/game/game_event_handler.h +++ b/cockatrice/src/game/game_event_handler.h @@ -96,26 +96,26 @@ signals: void playerKicked(); void gameFlooded(); void containerProcessingStarted(GameEventContext context); - void setContextJudgeName(); + void setContextJudgeName(QString judgeName); void containerProcessingDone(); void logSpectatorSay(ServerInfo_User userInfo, QString message); void logSpectatorLeave(QString name, QString reason); void logGameStart(); - void logReadyStart(); - void logNotReadyStart(); - void playerConceded(); - void playerUnconceded(); - void logDeckSelect(); - void logSideboardLockSet(); - void logConnectionStateChanged(); - void logJoinSpectator(); + void logReadyStart(Player *player); + void logNotReadyStart(Player *player); + void playerConceded(Player *player); + void playerUnconceded(Player *player); + void logDeckSelect(Player *player, QString deckHash, int sideboardSize); + void logSideboardLockSet(Player *player, bool sideboardLocked); + void logConnectionStateChanged(Player *player, bool connected); + void logJoinSpectator(QString spectatorName); void logJoinPlayer(Player *player); void logLeave(Player *player, QString reason); void logKicked(); void logTurnReversed(Player *player, bool reversed); void logGameClosed(); - void logActivePlayer(); - void logActivePhaseChanged(); + void logActivePlayer(Player *activePlayer); + void logActivePhaseChanged(int activePhase); }; #endif // COCKATRICE_GAME_EVENT_HANDLER_H diff --git a/cockatrice/src/server/message_log_widget.cpp b/cockatrice/src/server/message_log_widget.cpp index d8265848b..780ed0b78 100644 --- a/cockatrice/src/server/message_log_widget.cpp +++ b/cockatrice/src/server/message_log_widget.cpp @@ -391,6 +391,11 @@ void MessageLogWidget::logGameStart() appendHtmlServerMessage(tr("The game has started.")); } +void MessageLogWidget::logGameFlooded() +{ + appendMessage(tr("You are flooding the game. Please wait a couple of seconds.")); +} + void MessageLogWidget::logJoin(Player *player) { soundEngine->playSound("player_join"); diff --git a/cockatrice/src/server/message_log_widget.h b/cockatrice/src/server/message_log_widget.h index 21b03dee9..12820abad 100644 --- a/cockatrice/src/server/message_log_widget.h +++ b/cockatrice/src/server/message_log_widget.h @@ -49,6 +49,7 @@ public slots: void logFlipCard(Player *player, QString cardName, bool faceDown); void logGameClosed(); void logGameStart(); + void logGameFlooded(); void logJoin(Player *player); void logJoinSpectator(QString name); void logKicked();