# HG changeset patch # User unc0rr # Date 1168783720 0 # Node ID 4c3aad46baa5e6a83e559f6d13389cb4cbf98ebd # Parent 95625db21bf83b7c983069a2d623d4a711361e3f Send game parameters by net... Currently it leads to infinite loop, flooding traffic with messages about changes diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/hwform.cpp Sun Jan 14 14:08:40 2007 +0000 @@ -35,6 +35,7 @@ #include "pages.h" #include "hwconsts.h" #include "newnetclient.h" +#include "gamecfgwidget.h" HWForm::HWForm(QWidget *parent) : QMainWindow(parent), pnetserver(0) @@ -241,7 +242,24 @@ connect(hwnet, SIGNAL(AddGame(const QString &)), this, SLOT(AddGame(const QString &))); connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter())); connect(hwnet, SIGNAL(ChangeInTeams(const QStringList &)), this, SLOT(ChangeInNetTeams(const QStringList &))); + connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamWillPlay(HWTeam)), hwnet, SLOT(AddTeam(HWTeam))); + + connect(ui.pageNetGame->pGameCFG, SIGNAL(seedChanged(const QString &)), hwnet, SLOT(onSeedChanged(const QString &))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(mapChanged(const QString &)), hwnet, SLOT(onMapChanged(const QString &))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(themeChanged(const QString &)), hwnet, SLOT(onThemeChanged(const QString &))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(initHealthChanged(quint32)), hwnet, SLOT(onInitHealthChanged(quint32))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(turnTimeChanged(quint32)), hwnet, SLOT(onTurnTimeChanged(quint32))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(fortsModeChanged(bool)), hwnet, SLOT(onFortsModeChanged(bool))); + + connect(hwnet, SIGNAL(seedChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(onSeedChanged(const QString &))); + connect(hwnet, SIGNAL(mapChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(onMapChanged(const QString &))); + connect(hwnet, SIGNAL(themeChanged(const QString &)), ui.pageNetGame->pGameCFG, SLOT(onThemeChanged(const QString &))); + connect(hwnet, SIGNAL(initHealthChanged(quint32)), ui.pageNetGame->pGameCFG, SLOT(onInitHealthChanged(quint32))); + connect(hwnet, SIGNAL(turnTimeChanged(quint32)), ui.pageNetGame->pGameCFG, SLOT(onTurnTimeChanged(quint32))); + connect(hwnet, SIGNAL(fortsModeChanged(bool)), ui.pageNetGame->pGameCFG, SLOT(onFortsModeChanged(bool))); + + hwnet->Connect(hostName, port, nick); config->SaveOptions(); } diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/mapContainer.cpp --- a/QTfrontend/mapContainer.cpp Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/mapContainer.cpp Sun Jan 14 14:08:40 2007 +0000 @@ -101,10 +101,8 @@ { pMap = new HWMap(); connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage))); - emit seedChanged(m_seed); pMap->getImage(m_seed.toStdString()); theme = (Themes->size() > 0) ? Themes->at(rand() % Themes->size()) : "steel"; - emit themeChanged(theme); } QString HWMapContainer::getCurrentSeed() const @@ -147,5 +145,7 @@ void HWMapContainer::setRandomSeed() { m_seed = QUuid::createUuid().toString(); + emit seedChanged(m_seed); changeImage(); + emit themeChanged(theme); } diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/newnetclient.cpp Sun Jan 14 14:08:40 2007 +0000 @@ -16,7 +16,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include #include #include @@ -64,8 +63,7 @@ void HWNewNet::StartGame() { - seed = QUuid::createUuid().toString(); - RawSendNet(QString("START:") + delimeter + seed); + RawSendNet(QString("START:")); } void HWNewNet::SendNet(const QByteArray & buf) @@ -74,7 +72,7 @@ qDebug() << "to net:" << buf << ":" << msg; //NetBuffer += buf; - RawSendNet(QString(msg)); + RawSendNet(QString("GAMEMSG:%1%2").arg(delimeter).arg(msg)); } void HWNewNet::RawSendNet(const QString & str) @@ -84,7 +82,6 @@ void HWNewNet::RawSendNet(const QByteArray & buf) { - if (buf.size() > 510) return; NetSocket.write(buf); NetSocket.write("\n", 1); } @@ -169,9 +166,47 @@ return; } - QByteArray em = QByteArray::fromBase64(msg.toAscii()); - qDebug() << "to engine:" << em; - emit FromNet(em); + if (lst[0] == "CONFIG_PARAM") { + if (lst[1] == "SEED") { + emit seedChanged(lst[2]); + return; + } + if (lst[1] == "MAP") { + emit mapChanged(lst[2]); + return; + } + if (lst[1] == "THEME") { + emit themeChanged(lst[2]); + return; + } + if (lst[1] == "HEALTH") { + emit initHealthChanged(lst[2].toUInt()); + return; + } + if (lst[1] == "TURNTIME") { + emit turnTimeChanged(lst[2].toUInt()); + return; + } + if (lst[1] == "FORTSMODE") { + emit fortsModeChanged(lst[2].toInt() != 0); + return; + } + qDebug() << "unknow config param: " << lst[1]; + return; + } + + + // should be kinda game states, which don't allow "GAMEMSG:" at configure step, + // "CONNECTED" at round phase, etc. + if (lst[0] == "GAMEMSG:") { + QByteArray em = QByteArray::fromBase64(lst[1].toAscii()); + qDebug() << "to engine:" << em; + emit FromNet(em); + return; + } + + qDebug() << "unknown net command: " << msg; + } @@ -194,3 +229,33 @@ connect(this, SIGNAL(LocalCFG(const QString &)), game, SLOT(LocalCFG(const QString &))); game->StartNet(); } + +void HWNewNet::onSeedChanged(const QString & seed) +{ + RawSendNet(QString("CONFIG_PARAM%1SEED%1%2").arg(delimeter).arg(seed)); +} + +void HWNewNet::onMapChanged(const QString & map) +{ + RawSendNet(QString("CONFIG_PARAM%1MAP%1%2").arg(delimeter).arg(map)); +} + +void HWNewNet::onThemeChanged(const QString & theme) +{ + RawSendNet(QString("CONFIG_PARAM%1THEME%1%2").arg(delimeter).arg(theme)); +} + +void HWNewNet::onInitHealthChanged(quint32 health) +{ + RawSendNet(QString("CONFIG_PARAM%1HEALTH%1%2").arg(delimeter).arg(health)); +} + +void HWNewNet::onTurnTimeChanged(quint32 time) +{ + RawSendNet(QString("CONFIG_PARAM%1TURNTIME%1%2").arg(delimeter).arg(time)); +} + +void HWNewNet::onFortsModeChanged(bool value) +{ + RawSendNet(QString("CONFIG_PARAM%1FORTSMODE%1%2").arg(delimeter).arg(value)); +} diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/newnetclient.h --- a/QTfrontend/newnetclient.h Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/newnetclient.h Sun Jan 14 14:08:40 2007 +0000 @@ -82,9 +82,22 @@ void LocalCFG(const QString & team); void ChangeInTeams(const QStringList & teams); + void seedChanged(const QString & seed); + void mapChanged(const QString & map); + void themeChanged(const QString & theme); + void initHealthChanged(quint32 health); + void turnTimeChanged(quint32 time); + void fortsModeChanged(bool value); + public slots: void SendNet(const QByteArray & buf); void AddTeam(const HWTeam & team); + void onSeedChanged(const QString & seed); + void onMapChanged(const QString & map); + void onThemeChanged(const QString & theme); + void onInitHealthChanged(quint32 health); + void onTurnTimeChanged(quint32 time); + void onFortsModeChanged(bool value); private slots: void ClientRead(); diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/pages.cpp Sun Jan 14 14:08:40 2007 +0000 @@ -448,10 +448,10 @@ QFont * font14 = new QFont("MS Shell Dlg", 14); QGridLayout * pageLayout = new QGridLayout(this); - pGameCFG=new GameCFGWidget(this); + pGameCFG = new GameCFGWidget(this); pageLayout->addWidget(pGameCFG, 0, 0); - - pNetTeamsWidget=new TeamSelWidget(this); + + pNetTeamsWidget = new TeamSelWidget(this); pageLayout->addWidget(pNetTeamsWidget, 0, 1); BtnBack = new QPushButton(this); diff -r 95625db21bf8 -r 4c3aad46baa5 QTfrontend/pages.h --- a/QTfrontend/pages.h Sun Jan 14 13:23:15 2007 +0000 +++ b/QTfrontend/pages.h Sun Jan 14 14:08:40 2007 +0000 @@ -190,8 +190,6 @@ QPushButton *BtnGo; TeamSelWidget* pNetTeamsWidget; - - private: GameCFGWidget* pGameCFG; };