# HG changeset patch # User displacer # Date 1200087924 0 # Node ID 44f167938201c21de32e156503c7e249bf750ecc # Parent d6f32ed6edc8cbcf15d700b15aa380b70ace2ac0 pre-alpha network weapons selection diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/gamecfgwidget.cpp --- a/QTfrontend/gamecfgwidget.cpp Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/gamecfgwidget.cpp Fri Jan 11 21:45:24 2008 +0000 @@ -55,6 +55,7 @@ L_InitHealth = new QLabel(QLabel::tr("Initial health"), GBoxOptions); GBoxOptionsLayout->addWidget(L_TurnTime, 1, 0); GBoxOptionsLayout->addWidget(L_InitHealth, 2, 0); + GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Weapons"), GBoxOptions), 3, 0); SB_TurnTime = new QSpinBox(GBoxOptions); SB_TurnTime->setRange(15, 90); @@ -66,19 +67,15 @@ SB_InitHealth->setSingleStep(25); GBoxOptionsLayout->addWidget(SB_TurnTime, 1, 1); GBoxOptionsLayout->addWidget(SB_InitHealth, 2, 1); - - QGroupBox *GBoxWeapons = new QGroupBox(this); - GBoxWeapons->setTitle(QGroupBox::tr("Weapons")); - QHBoxLayout* lt=new QHBoxLayout(GBoxWeapons); - WeaponsName = new QComboBox(GBoxWeapons); - lt->addWidget(WeaponsName); - mainLayout.addWidget(GBoxWeapons); + WeaponsName = new QComboBox(GBoxOptions); + GBoxOptionsLayout->addWidget(WeaponsName, 3, 1); mainLayout.addWidget(new QWidget(this), 100); connect(SB_InitHealth, SIGNAL(valueChanged(int)), this, SLOT(onInitHealthChanged(int))); connect(SB_TurnTime, SIGNAL(valueChanged(int)), this, SLOT(onTurnTimeChanged(int))); connect(CB_mode_Forts, SIGNAL(toggled(bool)), this, SLOT(onFortsModeChanged(bool))); + connect(WeaponsName, SIGNAL(activated(const QString&)), this, SIGNAL(newWeaponsName(const QString&))); connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(onSeedChanged(const QString &))); connect(pMapContainer, SIGNAL(themeChanged(const QString &)), this, SLOT(onThemeChanged(const QString &))); @@ -118,6 +115,11 @@ return SB_TurnTime->value(); } +QString GameCFGWidget::getNetAmmo() const +{ + return curNetAmmo; +} + QStringList GameCFGWidget::getFullConfig() const { QStringList sl; @@ -190,3 +192,8 @@ { emit themeChanged(theme); } + +void GameCFGWidget::setNetAmmo(const QString& ammo) +{ + curNetAmmo=ammo; +} diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/gamecfgwidget.h --- a/QTfrontend/gamecfgwidget.h Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/gamecfgwidget.h Fri Jan 11 21:45:24 2008 +0000 @@ -43,6 +43,8 @@ quint32 getTurnTime() const; QStringList getFullConfig() const; + QString getNetAmmo() const; // FIXME: hack - this class should contain all ammo states itself + QComboBox* WeaponsName; public slots: @@ -52,6 +54,7 @@ void setInitHealth(quint32 health); void setTurnTime(quint32 time); void setFortsMode(bool value); + void setNetAmmo(const QString&); signals: void seedChanged(const QString & seed); @@ -60,6 +63,7 @@ void initHealthChanged(quint32 health); void turnTimeChanged(quint32 time); void fortsModeChanged(bool value); + void newWeaponsName(const QString& weapon); private: QCheckBox * CB_mode_Forts; @@ -70,6 +74,8 @@ QLabel * L_TurnTime; QLabel * L_InitHealth; + QString curNetAmmo; + private slots: void onSeedChanged(const QString & seed); void onMapChanged(const QString & map); diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/hwform.cpp Fri Jan 11 21:45:24 2008 +0000 @@ -89,6 +89,7 @@ connect(ui.pageOptions->WeaponEdit, SIGNAL(clicked()), this, SLOT(GoToSelectWeapon())); connect(ui.pageOptions->WeaponsButt, SIGNAL(clicked()), this, SLOT(GoToSelectNewWeapon())); connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsChanged()), this, SLOT(UpdateWeapons())); + connect(ui.pageNetGame->pGameCFG, SIGNAL(newWeaponsName(const QString&)), this, SLOT(NetWeaponNameChanged(const QString&))); connect(ui.pageNet->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageNet->BtnSpecifyServer, SIGNAL(clicked()), this, SLOT(NetConnect())); @@ -134,6 +135,12 @@ ui.pageNetGame->pGameCFG->WeaponsName->addItems(ui.pageSelectWeapon->pWeapons->getWeaponNames()); } +void HWForm::NetWeaponNameChanged(const QString& name) +{ + QString ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageNetGame->pGameCFG->WeaponsName->currentText()); + hwnet->onWeaponsNameChanged(ammo); +} + void HWForm::UpdateTeamsLists(const QStringList* editable_teams) { QStringList teamslist; @@ -415,6 +422,7 @@ ui.pageNetGame->pNetTeamsWidget, SLOT(changeHHNum(const HWTeam&))); connect(hwnet, SIGNAL(teamColorChanged(const HWTeam&)), ui.pageNetGame->pNetTeamsWidget, SLOT(changeTeamColor(const HWTeam&))); + connect(hwnet, SIGNAL(ammoChanged(const QString&)), ui.pageNetGame->pGameCFG, SLOT(setNetAmmo(const QString&))); hwnet->Connect(hostName, port, nick); } @@ -627,7 +635,12 @@ void HWForm::CreateNetGame() { - QString ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageNetGame->pGameCFG->WeaponsName->currentText()); + QString ammo; + if (pnetserver) { + ammo=ui.pageSelectWeapon->pWeapons->getWeaponsString(ui.pageNetGame->pGameCFG->WeaponsName->currentText()); + } else { + ammo=ui.pageNetGame->pGameCFG->getNetAmmo(); + } CreateGame(ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget, ammo); connect(game, SIGNAL(SendNet(const QByteArray &)), hwnet, SLOT(SendNet(const QByteArray &))); diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/hwform.h --- a/QTfrontend/hwform.h Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/hwform.h Fri Jan 11 21:45:24 2008 +0000 @@ -83,6 +83,7 @@ void GetRecord(bool isDemo, const QByteArray & record); void CreateNetGame(); void UpdateWeapons(); + void NetWeaponNameChanged(const QString& name); private: void _NetConnect(const QString & hostName, quint16 port, const QString & nick); diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/newnetclient.cpp Fri Jan 11 21:45:24 2008 +0000 @@ -18,6 +18,7 @@ #include +#include "hwconsts.h" #include "newnetclient.h" #include "proto.h" #include "gameuiconfig.h" @@ -282,6 +283,10 @@ emit fortsModeChanged(lst[2].toInt() != 0); return; } + if (lst[1] == "AMMO") { + emit ammoChanged(lst[2]); + return; + } QStringList hhTmpList=lst[1].split('+'); if (hhTmpList[0] == "TEAM_COLOR") { HWTeam tmptm(hhTmpList[1], hhTmpList[2].toUInt()); @@ -334,6 +339,8 @@ onInitHealthChanged(m_pGameCFGWidget->getInitHealth()); onTurnTimeChanged(m_pGameCFGWidget->getTurnTime()); onFortsModeChanged(m_pGameCFGWidget->getGameFlags() & 0x1); + // always initialize with default ammo (also avoiding complicated cross-class dependencies) + onWeaponsNameChanged(cDefaultAmmoStore->mid(10)); } void HWNewNet::RunGame() @@ -385,6 +392,11 @@ RawSendNet(QString("CONFIG_PARAM%1FORTSMODE%1%2").arg(delimeter).arg(value)); } +void HWNewNet::onWeaponsNameChanged(const QString& ammo) +{ + RawSendNet(QString("CONFIG_PARAM%1AMMO%1%2").arg(delimeter).arg(ammo)); +} + void HWNewNet::chatLineToNet(const QString& str) { if(str!="") { diff -r d6f32ed6edc8 -r 44f167938201 QTfrontend/newnetclient.h --- a/QTfrontend/newnetclient.h Wed Jan 09 21:22:22 2008 +0000 +++ b/QTfrontend/newnetclient.h Fri Jan 11 21:45:24 2008 +0000 @@ -102,6 +102,7 @@ void hhnumChanged(const HWTeam&); void teamColorChanged(const HWTeam&); void chatStringFromNet(const QStringList&); + void ammoChanged(const QString&); public slots: void chatLineToNet(const QString& str); @@ -116,6 +117,7 @@ void onFortsModeChanged(bool value); void onHedgehogsNumChanged(const HWTeam& team); void onTeamColorChanged(const HWTeam& team); + void onWeaponsNameChanged(const QString& ammo); private slots: void ClientRead();