Hook up playerListWidget properly.

Took 1 hour 17 minutes
This commit is contained in:
Lukas Brübach 2025-09-07 20:57:32 +02:00
parent cf6120628d
commit 040eacee72
5 changed files with 24 additions and 36 deletions

View file

@ -54,18 +54,16 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
gameState = new GameState(0, -1, -1, _tabSupervisor->getIsLocalGame(), QList<AbstractClient *>(), true, false, gameState = new GameState(0, -1, -1, _tabSupervisor->getIsLocalGame(), QList<AbstractClient *>(), true, false,
false, false, -1, false); false, false, -1, false);
connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer); connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer);
connect(gameState, &GameState::spectatorAdded, this, &TabGame::addSpectator);
connect(gameState, &GameState::gameStarted, this, &TabGame::startGame); connect(gameState, &GameState::gameStarted, this, &TabGame::startGame);
gameEventHandler = new GameEventHandler(this); gameEventHandler = new GameEventHandler(this);
connect(this, &TabGame::gameLeft, gameEventHandler, &GameEventHandler::handleGameLeft); connectToGameEventHandler();
connect(gameEventHandler, &GameEventHandler::localPlayerDeckSelected, this, &TabGame::processLocalPlayerDeckSelect);
connect(gameEventHandler, &GameEventHandler::gameStopped, this, &TabGame::stopGame);
connect(gameEventHandler, &GameEventHandler::gameClosed, this, &TabGame::closeGame);
createCardInfoDock(true); createCardInfoDock(true);
createPlayerListDock(true); createPlayerListDock(true);
connectPlayerListToGameEventHandler();
createMessageDock(true); createMessageDock(true);
connectMessageLogToGameEventHandler();
createPlayAreaWidget(true); createPlayAreaWidget(true);
createDeckViewContainerWidget(true); createDeckViewContainerWidget(true);
createReplayDock(_replay); createReplayDock(_replay);
@ -107,16 +105,12 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor,
// THIS CTOR IS USED ON GAMES // THIS CTOR IS USED ON GAMES
gameMetaInfo->setStarted(false); gameMetaInfo->setStarted(false);
connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer); connect(gameState, &GameState::playerAdded, this, &TabGame::addPlayer);
connect(gameState, &GameState::spectatorAdded, this, &TabGame::addSpectator);
connect(gameMetaInfo, &GameMetaInfo::startedChanged, gameState, &GameState::onStartedChanged); connect(gameMetaInfo, &GameMetaInfo::startedChanged, gameState, &GameState::onStartedChanged);
connect(gameState, &GameState::gameStarted, this, &TabGame::startGame); connect(gameState, &GameState::gameStarted, this, &TabGame::startGame);
gameEventHandler = new GameEventHandler(this); gameEventHandler = new GameEventHandler(this);
connect(this, &TabGame::gameLeft, gameEventHandler, &GameEventHandler::handleGameLeft); connectToGameEventHandler();
connect(gameEventHandler, &GameEventHandler::localPlayerDeckSelected, this, &TabGame::processLocalPlayerDeckSelect);
connect(gameEventHandler, &GameEventHandler::gameStopped, this, &TabGame::stopGame);
connect(gameEventHandler, &GameEventHandler::gameClosed, this, &TabGame::closeGame);
createCardInfoDock(); createCardInfoDock();
createPlayerListDock(); createPlayerListDock();
@ -152,6 +146,18 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor,
QTimer::singleShot(0, this, &TabGame::loadLayout); 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() void TabGame::connectMessageLogToGameEventHandler()
{ {
// connect(gameEventHandler, &GameEventHandler:: , messageLog, &MessageLogWidget::); // connect(gameEventHandler, &GameEventHandler:: , messageLog, &MessageLogWidget::);
@ -192,9 +198,9 @@ void TabGame::connectMessageLogToGameEventHandler()
void TabGame::connectPlayerListToGameEventHandler() 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::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::spectatorLeft, playerListWidget, &PlayerListWidget::removePlayer);
connect(gameEventHandler, &GameEventHandler::playerPropertiesChanged, playerListWidget, connect(gameEventHandler, &GameEventHandler::playerPropertiesChanged, playerListWidget,
&PlayerListWidget::updatePlayerProperties); &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) void TabGame::removeSpectator(int spectatorId, ServerInfo_User spectator)
{ {
Q_UNUSED(spectator); Q_UNUSED(spectator);

View file

@ -172,6 +172,7 @@ public:
QList<AbstractClient *> &_clients, QList<AbstractClient *> &_clients,
const Event_GameJoined &event, const Event_GameJoined &event,
const QMap<int, QString> &_roomGameTypes); const QMap<int, QString> &_roomGameTypes);
void connectToGameEventHandler();
void connectMessageLogToGameEventHandler(); void connectMessageLogToGameEventHandler();
void connectPlayerListToGameEventHandler(); void connectPlayerListToGameEventHandler();
void loadReplay(GameReplay *replay); void loadReplay(GameReplay *replay);
@ -214,7 +215,6 @@ public slots:
void updateTimeElapsedLabel(QString newTime); void updateTimeElapsedLabel(QString newTime);
void addPlayerToAutoCompleteList(QString playerName); void addPlayerToAutoCompleteList(QString playerName);
void removePlayerFromAutoCompleteList(QString playerName); void removePlayerFromAutoCompleteList(QString playerName);
void addSpectator(ServerInfo_PlayerProperties prop);
void removeSpectator(int spectatorId, ServerInfo_User spectator); void removeSpectator(int spectatorId, ServerInfo_User spectator);
void processLocalPlayerSideboardLocked(int playerId, bool sideboardLocked); void processLocalPlayerSideboardLocked(int playerId, bool sideboardLocked);
void processLocalPlayerReadyStateChanged(int playerId, bool ready); void processLocalPlayerReadyStateChanged(int playerId, bool ready);

View file

@ -264,6 +264,7 @@ void GameEventHandler::eventGameStateChanged(const Event_GameStateChanged &event
Player *player = gameState->getPlayers().value(playerId, 0); Player *player = gameState->getPlayers().value(playerId, 0);
if (!player) { if (!player) {
player = gameState->addPlayer(playerId, prop.user_info(), game); player = gameState->addPlayer(playerId, prop.user_info(), game);
emit playerJoined(prop);
} }
player->processPlayerInfo(playerInfo); player->processPlayerInfo(playerInfo);
if (player->getLocal()) { if (player->getLocal()) {

View file

@ -97,24 +97,11 @@ void PlayerListWidget::retranslateUi()
{ {
} }
void PlayerListWidget::addPlayer(const Player *player) void PlayerListWidget::addPlayer(const ServerInfo_PlayerProperties &player)
{ {
QTreeWidgetItem *newPlayer = new PlayerListTWI; QTreeWidgetItem *newPlayer = new PlayerListTWI;
players.insert(player->getId(), newPlayer); players.insert(player.player_id(), newPlayer);
// updatePlayerProperties(player->getUserInfo()); updatePlayerProperties(player);
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);
addTopLevelItem(newPlayer); addTopLevelItem(newPlayer);
sortItems(1, Qt::AscendingOrder); sortItems(1, Qt::AscendingOrder);
resizeColumnToContents(4); resizeColumnToContents(4);

View file

@ -54,8 +54,7 @@ public:
void showContextMenu(const QPoint &pos, const QModelIndex &index); void showContextMenu(const QPoint &pos, const QModelIndex &index);
public slots: public slots:
void addPlayer(const Player *player); void addPlayer(const ServerInfo_PlayerProperties &player);
void addSpectator(const ServerInfo_PlayerProperties &spectator);
void removePlayer(int playerId); void removePlayer(int playerId);
void updatePlayerProperties(const ServerInfo_PlayerProperties &prop, int playerId = -1); void updatePlayerProperties(const ServerInfo_PlayerProperties &prop, int playerId = -1);
}; };