Pass on admin state if the admin leaves the network game, so that someone else can start the game.

This commit is contained in:
lotodore
2007-10-03 13:36:47 +00:00
parent 8385b2e28d
commit 076d44b0ae
19 changed files with 239 additions and 49 deletions
@@ -23,7 +23,7 @@
#include <net/socket_msg.h>
startNetworkGameDialogImpl::startNetworkGameDialogImpl(QWidget *parent, ConfigFile *config)
: QDialog(parent), myW(NULL), isAdmin(false), myConfig(config), mySession(NULL)
: QDialog(parent), myW(NULL), myPlayerId(0), isAdmin(false), myConfig(config), mySession(NULL)
{
setupUi(this);
@@ -64,6 +64,7 @@ void startNetworkGameDialogImpl::refresh(int actionID) {
void startNetworkGameDialogImpl::joinedNetworkGame(unsigned playerId, QString playerName, int rights) {
myPlayerId = playerId;
isAdmin = rights == PLAYER_RIGHTS_ADMIN;
addConnectedPlayer(playerId, playerName, rights);
}
@@ -116,6 +117,15 @@ void startNetworkGameDialogImpl::removePlayer(unsigned playerId, QString) {
checkPlayerQuantity();
}
void startNetworkGameDialogImpl::newGameAdmin(unsigned playerId, QString)
{
if (myPlayerId == playerId)
{
isAdmin = true;
checkPlayerQuantity();
}
}
void startNetworkGameDialogImpl::playerSelected(QTreeWidgetItem* item, QTreeWidgetItem*) {
if (item)
@@ -166,6 +176,8 @@ void startNetworkGameDialogImpl::clearDialog()
pushButton_startGame->setEnabled(false);
treeWidget->clear();
checkBox_fillUpWithComputerOpponents->hide();
myPlayerId = 0;
}
void startNetworkGameDialogImpl::setSession(Session *session)