Major redesign: Using game ids and player ids in gui (associated with tree view items).
Player list of all network games is now dynamically updated in lobby (no polling, server sends events).
This commit is contained in:
@@ -30,16 +30,14 @@ startNetworkGameDialogImpl::startNetworkGameDialogImpl(QWidget *parent, ConfigFi
|
||||
connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) );
|
||||
connect( pushButton_startGame, SIGNAL( clicked() ), this, SLOT( startGame() ) );
|
||||
connect( pushButton_Kick, SIGNAL( clicked() ), this, SLOT( kickPlayer() ) );
|
||||
connect( treeWidget, SIGNAL( itemClicked ( QTreeWidgetItem*, int) ), this, SLOT( playerSelected(QTreeWidgetItem*, int) ) );
|
||||
connect( treeWidget, SIGNAL( clear () ), this, SLOT( clearPlayers() ) );
|
||||
|
||||
pushButton_Kick->setEnabled(false);
|
||||
pushButton_startGame->setEnabled(false);
|
||||
connect( treeWidget, SIGNAL( currentItemChanged ( QTreeWidgetItem*, QTreeWidgetItem*) ), this, SLOT( playerSelected(QTreeWidgetItem*, QTreeWidgetItem*) ) );
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::exec() {
|
||||
|
||||
GameInfo info = mySession->getClientGameInfo("default");
|
||||
|
||||
clearDialog();
|
||||
|
||||
GameInfo info = mySession->getClientGameInfo(0);
|
||||
label_maxPlayerNumber->setText(QString::number(info.data.maxNumberOfPlayers));
|
||||
|
||||
QDialog::exec();
|
||||
@@ -62,17 +60,18 @@ void startNetworkGameDialogImpl::refresh(int actionID) {
|
||||
}
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::joinedNetworkGame(QString playerName, int rights) {
|
||||
void startNetworkGameDialogImpl::joinedNetworkGame(unsigned playerId, QString playerName, int rights) {
|
||||
|
||||
isAdmin = rights == PLAYER_RIGHTS_ADMIN;
|
||||
addConnectedPlayer(playerName, rights);
|
||||
addConnectedPlayer(playerId, playerName, rights);
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::addConnectedPlayer(QString playerName, int rights) {
|
||||
void startNetworkGameDialogImpl::addConnectedPlayer(unsigned playerId, QString playerName, int rights) {
|
||||
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget, 0);
|
||||
item->setData(0, Qt::UserRole, playerId);
|
||||
item->setData(0, Qt::DisplayRole, playerName);
|
||||
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget,0);
|
||||
item->setData(0, 0, playerName);
|
||||
|
||||
if(treeWidget->topLevelItemCount() != maxPlayerNumber) {
|
||||
myW->getMySDLPlayer()->playSound("playerconnected", 0);
|
||||
}
|
||||
@@ -83,27 +82,38 @@ void startNetworkGameDialogImpl::addConnectedPlayer(QString playerName, int righ
|
||||
checkPlayerQuantity();
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::updatePlayer(QString oldPlayerName, QString newPlayerName)
|
||||
void startNetworkGameDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName)
|
||||
{
|
||||
QList<QTreeWidgetItem *> list = treeWidget->findItems(oldPlayerName, Qt::MatchExactly, 0);
|
||||
if(!list.empty()) {
|
||||
list[0]->setText(0, newPlayerName);
|
||||
QTreeWidgetItemIterator it(treeWidget);
|
||||
while (*it) {
|
||||
if ((*it)->data(0, Qt::UserRole) == playerId)
|
||||
{
|
||||
(*it)->setData(0, Qt::DisplayRole, newPlayerName);
|
||||
break;
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::removePlayer(QString playerName) {
|
||||
void startNetworkGameDialogImpl::removePlayer(unsigned playerId, QString) {
|
||||
|
||||
QList<QTreeWidgetItem *> list = treeWidget->findItems(playerName, Qt::MatchExactly, 0);
|
||||
if(!list.empty()) {
|
||||
treeWidget->takeTopLevelItem(treeWidget->indexOfTopLevelItem(list[0]));
|
||||
QTreeWidgetItemIterator it(treeWidget);
|
||||
while (*it) {
|
||||
if ((*it)->data(0, Qt::UserRole) == playerId)
|
||||
{
|
||||
treeWidget->takeTopLevelItem(treeWidget->indexOfTopLevelItem(*it));
|
||||
break;
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
||||
checkPlayerQuantity();
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::playerSelected(QTreeWidgetItem*, int) {
|
||||
void startNetworkGameDialogImpl::playerSelected(QTreeWidgetItem* item, QTreeWidgetItem*) {
|
||||
|
||||
pushButton_Kick->setEnabled(isAdmin);
|
||||
if (item)
|
||||
pushButton_Kick->setEnabled(isAdmin);
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::kickPlayer() {
|
||||
@@ -137,9 +147,11 @@ void startNetworkGameDialogImpl::checkPlayerQuantity() {
|
||||
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::clearPlayers()
|
||||
void startNetworkGameDialogImpl::clearDialog()
|
||||
{
|
||||
pushButton_Kick->setEnabled(false);
|
||||
pushButton_startGame->setEnabled(false);
|
||||
treeWidget->clear();
|
||||
}
|
||||
|
||||
void startNetworkGameDialogImpl::setSession(Session *session)
|
||||
|
||||
@@ -45,14 +45,14 @@ public slots:
|
||||
void startGame();
|
||||
void cancel();
|
||||
void refresh(int actionID);
|
||||
void joinedNetworkGame(QString playerName, int rights);
|
||||
void addConnectedPlayer(QString playerName, int rights);
|
||||
void updatePlayer(QString oldPlayerName, QString newPlayerName);
|
||||
void removePlayer(QString playerName);
|
||||
void playerSelected(QTreeWidgetItem*, int);
|
||||
void joinedNetworkGame(unsigned playerId, QString playerName, int rights);
|
||||
void addConnectedPlayer(unsigned playerId, QString playerName, int rights);
|
||||
void updatePlayer(unsigned playerId, QString newPlayerName);
|
||||
void removePlayer(unsigned playerId, QString playerName);
|
||||
void playerSelected(QTreeWidgetItem*, QTreeWidgetItem*);
|
||||
void kickPlayer();
|
||||
void checkPlayerQuantity();
|
||||
void clearPlayers();
|
||||
void clearDialog();
|
||||
|
||||
void keyPressEvent ( QKeyEvent*);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user