diff --git a/cockatrice/src/game/player/player_manager.cpp b/cockatrice/src/game/player/player_manager.cpp index 8fa7bde78..d8c12cee6 100644 --- a/cockatrice/src/game/player/player_manager.cpp +++ b/cockatrice/src/game/player/player_manager.cpp @@ -72,14 +72,6 @@ Player *PlayerManager::getPlayer(int playerId) const void PlayerManager::onPlayerConceded(int playerId, bool conceded) { - // GameEventHandler cares about this for sending the concede/unconcede commands - if (isLocalPlayer(playerId)) { - if (conceded) { - emit activeLocalPlayerConceded(); - } else { - emit activeLocalPlayerUnconceded(); - } - } // Everything else cares about this if (conceded) { emit playerConceded(playerId); diff --git a/cockatrice/src/tabs/tab_game.cpp b/cockatrice/src/tabs/tab_game.cpp index 3bd857428..1a4cfe673 100644 --- a/cockatrice/src/tabs/tab_game.cpp +++ b/cockatrice/src/tabs/tab_game.cpp @@ -150,6 +150,7 @@ void TabGame::connectToPlayerManager() connect(game->getPlayerManager(), &PlayerManager::playerRemoved, this, &TabGame::processPlayerLeave); // update menu text when player concedes so that "concede" gets updated to "unconcede" connect(game->getPlayerManager(), &PlayerManager::playerConceded, this, &TabGame::retranslateUi); + connect(game->getPlayerManager(), &PlayerManager::playerUnconceded, this, &TabGame::retranslateUi); } void TabGame::connectToGameEventHandler() @@ -492,13 +493,14 @@ void TabGame::actConcede() if (QMessageBox::question(this, tr("Concede"), tr("Are you sure you want to concede this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes) return; + emit game->getPlayerManager()->activeLocalPlayerConceded(); player->setConceded(true); } else { if (QMessageBox::question(this, tr("Unconcede"), tr("You have already conceded. Do you want to return to this game?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes) return; - + emit game->getPlayerManager()->activeLocalPlayerUnconceded(); player->setConceded(false); } } @@ -800,6 +802,9 @@ void TabGame::startGame(bool _resuming) playerListWidget->setGameStarted(true, game->getGameState()->isResuming()); game->getGameMetaInfo()->setStarted(true); static_cast(gameView->scene())->rearrange(); + + aConcede->setText(tr("&Concede")); + aConcede->setEnabled(true); } void TabGame::stopGame() @@ -816,6 +821,9 @@ void TabGame::stopGame() playerListWidget->setGameStarted(false, false); scene->clearViews(); + + aConcede->setText(tr("&Concede")); + aConcede->setEnabled(false); } void TabGame::closeGame() @@ -935,6 +943,9 @@ void TabGame::createMenuItems() connect(aGameInfo, &QAction::triggered, this, &TabGame::actGameInfo); aConcede = new QAction(this); connect(aConcede, &QAction::triggered, this, &TabGame::actConcede); + if (!game->getGameMetaInfo()->started()) { + aConcede->setEnabled(false); + } connect(game->getPlayerManager(), &PlayerManager::activeLocalPlayerConceded, game->getGameEventHandler(), &GameEventHandler::handleActiveLocalPlayerConceded); connect(game->getPlayerManager(), &PlayerManager::activeLocalPlayerUnconceded, game->getGameEventHandler(),