From a84f164b8a4bb3ec93e8635b295398d5092735ea Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 29 Aug 2007 22:30:18 +0000 Subject: [PATCH] preparation gamelobby slots --- src/gui/qt/gamelobbydialog.ui | 2 +- .../gamelobbydialog/gamelobbydialogimpl.cpp | 54 ++++++++++++++++++- .../qt/gamelobbydialog/gamelobbydialogimpl.h | 17 ++++-- src/gui/qt/mainwindow/mainwindowimpl.cpp | 1 + .../startnetworkgamedialogimpl.cpp | 8 +++ .../startnetworkgamedialogimpl.h | 1 + 6 files changed, 78 insertions(+), 5 deletions(-) diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui index 51697e26..0793c440 100644 --- a/src/gui/qt/gamelobbydialog.ui +++ b/src/gui/qt/gamelobbydialog.ui @@ -144,7 +144,7 @@ - + 221 diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 33141a10..d7d9378f 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -15,7 +15,7 @@ #include "gamedata.h" gameLobbyDialogImpl::gameLobbyDialogImpl(QWidget *parent, ConfigFile *c) - : QDialog(parent), myConfig(c), currentGameName("") + : QDialog(parent), myW(NULL), myConfig(c), currentGameName(""), isAdmin(false) { setupUi(this); @@ -141,3 +141,55 @@ void gameLobbyDialogImpl::clearGames() label_TimeoutForPlayerAction->setText(""); } +void gameLobbyDialogImpl::checkPlayerQuantity() { + +// if (treeWidget->topLevelItemCount() >= 2 && isAdmin) { +// pushButton_startGame->setEnabled(true); +// } +// else { +// pushButton_startGame->setEnabled(false); +// } + +} + +void gameLobbyDialogImpl::joinedNetworkGame(QString playerName, int rights) { + + isAdmin = rights == PLAYER_RIGHTS_ADMIN; + addConnectedPlayer(playerName, rights); +} + + +void gameLobbyDialogImpl::addConnectedPlayer(QString playerName, int rights) { + + QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedPlayers,0); + item->setData(0, 0, playerName); + + GameInfo info = mySession->getClientGameInfo(currentGameName.toUtf8().constData()); + + if(treeWidget_connectedPlayers->topLevelItemCount() != info.data.maxNumberOfPlayers) { + myW->getMySDLPlayer()->playSound("playerconnected", 0); + } + else { + myW->getMySDLPlayer()->playSound("onlinegameready", 0); + } + + checkPlayerQuantity(); +} + +void gameLobbyDialogImpl::updatePlayer(QString oldPlayerName, QString newPlayerName) { + + QList list = treeWidget_connectedPlayers->findItems(oldPlayerName, Qt::MatchExactly, 0); + if(!list.empty()) { + list[0]->setText(0, newPlayerName); + } + +} + +void gameLobbyDialogImpl::removePlayer(QString playerName) { + + QList list = treeWidget_connectedPlayers->findItems(playerName, Qt::MatchExactly, 0); + if(!list.empty()) { + treeWidget_connectedPlayers->takeTopLevelItem(treeWidget_connectedPlayers->indexOfTopLevelItem(list[0])); + } + +} diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h index 1d2a95f9..f3341f4e 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h @@ -18,6 +18,9 @@ #include #include "createinternetgamedialogimpl.h" +#include "sdlplayer.h" +#include "mainwindowimpl.h" + class Session; class ConfigFile; @@ -35,7 +38,8 @@ public: void exec(); void setSession(Session *session); - + void setMyW ( mainWindowImpl* theValue ) { myW = theValue; } + public slots: void createGame(); @@ -50,15 +54,22 @@ public slots: QString getCurrentGameName() const { return currentGameName; } void clearGames(); + void checkPlayerQuantity(); + + void joinedNetworkGame(QString, int); + void addConnectedPlayer(QString, int); + void updatePlayer(QString, QString); + void removePlayer(QString); private: - + + mainWindowImpl* myW; ConfigFile *myConfig; Session *mySession; - createInternetGameDialogImpl *myCreateInternetGameDialog; QString currentGameName; + bool isAdmin; }; #endif diff --git a/src/gui/qt/mainwindow/mainwindowimpl.cpp b/src/gui/qt/mainwindow/mainwindowimpl.cpp index 88c89808..842fb245 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.cpp +++ b/src/gui/qt/mainwindow/mainwindowimpl.cpp @@ -549,6 +549,7 @@ mainWindowImpl::mainWindowImpl(ConfigFile *c, QMainWindow *parent) myGameLobbyDialog = new gameLobbyDialogImpl(this, myConfig); myStartNetworkGameDialog->setMyW(this); + myGameLobbyDialog->setMyW(this); // //ShortCuts // QShortcut *quitPokerTHKeys = new QShortcut(QKeySequence(Qt::Key_Control + Qt::Key_Q), this); diff --git a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp index e4d6912a..00041d3b 100644 --- a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp +++ b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp @@ -37,6 +37,14 @@ startNetworkGameDialogImpl::startNetworkGameDialogImpl(QWidget *parent, ConfigFi pushButton_startGame->setEnabled(false); } +void startNetworkGameDialogImpl::exec() { + + GameInfo info = mySession->getClientGameInfo("default"); + label_maxPlayerNumber->setText(QString::number(info.data.maxNumberOfPlayers)); + + QDialog::exec(); +} + void startNetworkGameDialogImpl::startGame() { assert(mySession); mySession->sendStartEvent(); diff --git a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h index e077773f..4c09a18c 100644 --- a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h +++ b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h @@ -59,6 +59,7 @@ public slots: void setMaxPlayerNumber ( int theValue ) { maxPlayerNumber = theValue; label_maxPlayerNumber->setText(QString::number(theValue,10)); } int getMaxPlayerNumber() const { return maxPlayerNumber; } + void exec(); private: