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,
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);

View file

@ -172,6 +172,7 @@ public:
QList<AbstractClient *> &_clients,
const Event_GameJoined &event,
const QMap<int, QString> &_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);

View file

@ -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()) {

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;
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);

View file

@ -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);
};