From 040eacee72a9bc5c33d25d87355fc299f8659138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sun, 7 Sep 2025 20:57:32 +0200 Subject: [PATCH] Hook up playerListWidget properly. Took 1 hour 17 minutes --- cockatrice/src/client/tabs/tab_game.cpp | 35 ++++++++++--------- cockatrice/src/client/tabs/tab_game.h | 2 +- cockatrice/src/game/game_event_handler.cpp | 1 + .../src/game/player/player_list_widget.cpp | 19 ++-------- .../src/game/player/player_list_widget.h | 3 +- 5 files changed, 24 insertions(+), 36 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index 9305d0c77..fe3a6d0c3 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -54,18 +54,16 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) gameState = new GameState(0, -1, -1, _tabSupervisor->getIsLocalGame(), QList(), true, false, false, false, -1, false); connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer); - connect(gameState, &GameState::spectatorAdded, this, &TabGame::addSpectator); connect(gameState, &GameState::gameStarted, this, &TabGame::startGame); gameEventHandler = new GameEventHandler(this); - connect(this, &TabGame::gameLeft, gameEventHandler, &GameEventHandler::handleGameLeft); - connect(gameEventHandler, &GameEventHandler::localPlayerDeckSelected, this, &TabGame::processLocalPlayerDeckSelect); - connect(gameEventHandler, &GameEventHandler::gameStopped, this, &TabGame::stopGame); - connect(gameEventHandler, &GameEventHandler::gameClosed, this, &TabGame::closeGame); + connectToGameEventHandler(); createCardInfoDock(true); createPlayerListDock(true); + connectPlayerListToGameEventHandler(); createMessageDock(true); + connectMessageLogToGameEventHandler(); createPlayAreaWidget(true); createDeckViewContainerWidget(true); createReplayDock(_replay); @@ -107,16 +105,12 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, // THIS CTOR IS USED ON GAMES gameMetaInfo->setStarted(false); connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer); - connect(gameState, &GameState::spectatorAdded, this, &TabGame::addSpectator); connect(gameMetaInfo, &GameMetaInfo::startedChanged, gameState, &GameState::onStartedChanged); connect(gameState, &GameState::gameStarted, this, &TabGame::startGame); gameEventHandler = new GameEventHandler(this); - connect(this, &TabGame::gameLeft, gameEventHandler, &GameEventHandler::handleGameLeft); - connect(gameEventHandler, &GameEventHandler::localPlayerDeckSelected, this, &TabGame::processLocalPlayerDeckSelect); - connect(gameEventHandler, &GameEventHandler::gameStopped, this, &TabGame::stopGame); - connect(gameEventHandler, &GameEventHandler::gameClosed, this, &TabGame::closeGame); + connectToGameEventHandler(); createCardInfoDock(); createPlayerListDock(); @@ -152,6 +146,18 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QTimer::singleShot(0, this, &TabGame::loadLayout); } +void TabGame::connectToGameEventHandler() +{ + connect(this, &TabGame::gameLeft, gameEventHandler, &GameEventHandler::handleGameLeft); + connect(gameEventHandler, &GameEventHandler::gameStopped, this, &TabGame::stopGame); + connect(gameEventHandler, &GameEventHandler::gameClosed, this, &TabGame::closeGame); + connect(gameEventHandler, &GameEventHandler::localPlayerReadyStateChanged, this, + &TabGame::processLocalPlayerReadyStateChanged); + connect(gameEventHandler, &GameEventHandler::localPlayerSideboardLocked, this, + &TabGame::processLocalPlayerSideboardLocked); + connect(gameEventHandler, &GameEventHandler::localPlayerDeckSelected, this, &TabGame::processLocalPlayerDeckSelect); +} + void TabGame::connectMessageLogToGameEventHandler() { // connect(gameEventHandler, &GameEventHandler:: , messageLog, &MessageLogWidget::); @@ -192,9 +198,9 @@ void TabGame::connectMessageLogToGameEventHandler() void TabGame::connectPlayerListToGameEventHandler() { - connect(gameState, &GameState::playerAdded, playerListWidget, &PlayerListWidget::addPlayer); + connect(gameEventHandler, &GameEventHandler::playerJoined, playerListWidget, &PlayerListWidget::addPlayer); connect(gameEventHandler, &GameEventHandler::playerLeft, playerListWidget, &PlayerListWidget::removePlayer); - connect(gameEventHandler, &GameEventHandler::spectatorJoined, playerListWidget, &PlayerListWidget::addSpectator); + connect(gameEventHandler, &GameEventHandler::spectatorJoined, playerListWidget, &PlayerListWidget::addPlayer); connect(gameEventHandler, &GameEventHandler::spectatorLeft, playerListWidget, &PlayerListWidget::removePlayer); connect(gameEventHandler, &GameEventHandler::playerPropertiesChanged, playerListWidget, &PlayerListWidget::updatePlayerProperties); @@ -535,11 +541,6 @@ void TabGame::removePlayerFromAutoCompleteList(QString playerName) } } -void TabGame::addSpectator(ServerInfo_PlayerProperties prop) -{ - playerListWidget->addSpectator(prop); -} - void TabGame::removeSpectator(int spectatorId, ServerInfo_User spectator) { Q_UNUSED(spectator); diff --git a/cockatrice/src/client/tabs/tab_game.h b/cockatrice/src/client/tabs/tab_game.h index 39632938d..a62b1257d 100644 --- a/cockatrice/src/client/tabs/tab_game.h +++ b/cockatrice/src/client/tabs/tab_game.h @@ -172,6 +172,7 @@ public: QList &_clients, const Event_GameJoined &event, const QMap &_roomGameTypes); + void connectToGameEventHandler(); void connectMessageLogToGameEventHandler(); void connectPlayerListToGameEventHandler(); void loadReplay(GameReplay *replay); @@ -214,7 +215,6 @@ public slots: void updateTimeElapsedLabel(QString newTime); void addPlayerToAutoCompleteList(QString playerName); void removePlayerFromAutoCompleteList(QString playerName); - void addSpectator(ServerInfo_PlayerProperties prop); void removeSpectator(int spectatorId, ServerInfo_User spectator); void processLocalPlayerSideboardLocked(int playerId, bool sideboardLocked); void processLocalPlayerReadyStateChanged(int playerId, bool ready); diff --git a/cockatrice/src/game/game_event_handler.cpp b/cockatrice/src/game/game_event_handler.cpp index 59d0cd11b..27c95f452 100644 --- a/cockatrice/src/game/game_event_handler.cpp +++ b/cockatrice/src/game/game_event_handler.cpp @@ -264,6 +264,7 @@ void GameEventHandler::eventGameStateChanged(const Event_GameStateChanged &event Player *player = gameState->getPlayers().value(playerId, 0); if (!player) { player = gameState->addPlayer(playerId, prop.user_info(), game); + emit playerJoined(prop); } player->processPlayerInfo(playerInfo); if (player->getLocal()) { diff --git a/cockatrice/src/game/player/player_list_widget.cpp b/cockatrice/src/game/player/player_list_widget.cpp index 4e901ab41..dc7489dce 100644 --- a/cockatrice/src/game/player/player_list_widget.cpp +++ b/cockatrice/src/game/player/player_list_widget.cpp @@ -97,24 +97,11 @@ void PlayerListWidget::retranslateUi() { } -void PlayerListWidget::addPlayer(const Player *player) +void PlayerListWidget::addPlayer(const ServerInfo_PlayerProperties &player) { - QTreeWidgetItem *newPlayer = new PlayerListTWI; - players.insert(player->getId(), newPlayer); - // updatePlayerProperties(player->getUserInfo()); - addTopLevelItem(newPlayer); - sortItems(1, Qt::AscendingOrder); - resizeColumnToContents(4); - resizeColumnToContents(5); -} - -void PlayerListWidget::addSpectator(const ServerInfo_PlayerProperties &spectator) -{ - - QTreeWidgetItem *newPlayer = new PlayerListTWI; - players.insert(spectator.player_id(), newPlayer); - updatePlayerProperties(spectator); + players.insert(player.player_id(), newPlayer); + updatePlayerProperties(player); addTopLevelItem(newPlayer); sortItems(1, Qt::AscendingOrder); resizeColumnToContents(4); diff --git a/cockatrice/src/game/player/player_list_widget.h b/cockatrice/src/game/player/player_list_widget.h index 7caf3db8a..4cef51998 100644 --- a/cockatrice/src/game/player/player_list_widget.h +++ b/cockatrice/src/game/player/player_list_widget.h @@ -54,8 +54,7 @@ public: void showContextMenu(const QPoint &pos, const QModelIndex &index); public slots: - void addPlayer(const Player *player); - void addSpectator(const ServerInfo_PlayerProperties &spectator); + void addPlayer(const ServerInfo_PlayerProperties &player); void removePlayer(int playerId); void updatePlayerProperties(const ServerInfo_PlayerProperties &prop, int playerId = -1); };