diff -r 46a9fde631f4 -r 75db7bb8dce8 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Wed Jan 02 11:11:49 2013 +0100 +++ b/QTfrontend/game.cpp Sun Jan 27 00:28:57 2013 +0100 @@ -22,13 +22,17 @@ #include #include #include +#include +#include "hwform.h" +#include "ui/page/pageoptions.h" #include "game.h" #include "hwconsts.h" #include "gameuiconfig.h" #include "gamecfgwidget.h" #include "teamselect.h" #include "proto.h" +#include "binds.h" #include "campaign.h" #include @@ -73,6 +77,18 @@ SetGameState(gsStopped); } +void HWGame::addKeyBindings(QByteArray * buf) +{ + for(int i = 0; i < BINDS_NUMBER; i++) + { + QString value = config->value(QString("Binds/%1").arg(cbinds[i].action), cbinds[i].strbind).toString(); + if (value.isEmpty() || value == "default") continue; + + QString bind = QString("edbind " + value + " " + cbinds[i].action); + HWProto::addStringToBuffer(*buf, bind); + } +} + void HWGame::commonConfig() { QByteArray buf; @@ -90,6 +106,8 @@ } HWProto::addStringToBuffer(buf, gt); + addKeyBindings(&buf); + buf += gamecfg->getFullConfig(); if (m_pTeamSelWidget) @@ -102,10 +120,11 @@ HWProto::addStringToBuffer(buf, QString("eammreinf %1").arg(ammostr.mid(3 * cAmmoNumber, cAmmoNumber))); if(gamecfg->schemeData(15).toBool() || !gamecfg->schemeData(21).toBool()) HWProto::addStringToBuffer(buf, QString("eammstore")); HWProto::addStringListToBuffer(buf, - team.teamGameConfig(gamecfg->getInitHealth())); + team.teamGameConfig(gamecfg->getInitHealth(), config)); ; } } + RawSendIPC(buf); } @@ -119,6 +138,8 @@ QByteArray teamscfg; ThemeModel * themeModel = DataManager::instance().themeModel(); + addKeyBindings(&teamscfg); + HWProto::addStringToBuffer(teamscfg, "TL"); HWProto::addStringToBuffer(teamscfg, QString("etheme %1") .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount()).data().toString() : "steel")); @@ -132,7 +153,7 @@ team1.setNumHedgehogs(4); HWNamegen::teamRandomNames(team1,true); HWProto::addStringListToBuffer(teamscfg, - team1.teamGameConfig(100)); + team1.teamGameConfig(100, config)); HWTeam team2; team2.setDifficulty(4); @@ -142,7 +163,7 @@ HWNamegen::teamRandomNames(team2,true); while(!team2.name().compare(team1.name()) || !team2.hedgehog(0).Hat.compare(team1.hedgehog(0).Hat)); HWProto::addStringListToBuffer(teamscfg, - team2.teamGameConfig(100)); + team2.teamGameConfig(100, config)); HWProto::addStringToBuffer(teamscfg, QString("eammloadt %1").arg(cDefaultAmmoStore->mid(0, cAmmoNumber))); HWProto::addStringToBuffer(teamscfg, QString("eammprob %1").arg(cDefaultAmmoStore->mid(cAmmoNumber, cAmmoNumber))); @@ -150,6 +171,7 @@ HWProto::addStringToBuffer(teamscfg, QString("eammreinf %1").arg(cDefaultAmmoStore->mid(3 * cAmmoNumber, cAmmoNumber))); HWProto::addStringToBuffer(teamscfg, QString("eammstore")); HWProto::addStringToBuffer(teamscfg, QString("eammstore")); + RawSendIPC(teamscfg); } @@ -160,6 +182,8 @@ HWProto::addStringToBuffer(traincfg, "eseed " + QUuid::createUuid().toString()); HWProto::addStringToBuffer(traincfg, "escript " + training); + addKeyBindings(&traincfg); + RawSendIPC(traincfg); } @@ -171,6 +195,8 @@ HWProto::addStringToBuffer(campaigncfg, "escript " + campaignScript); + addKeyBindings(&campaigncfg); + RawSendIPC(campaigncfg); } @@ -274,6 +300,16 @@ writeCampaignVar(msg.right(msg.size() - 3)); break; } + case 'W': + { + // fetch new window resolution via IPC and save it in the settings + int size = msg.size(); + QString newResolution = QString().append(msg.mid(2)).left(size - 4); + QStringList wh = newResolution.split('x'); + config->Form->ui.pageOptions->windowWidthEdit->setText(wh[0]); + config->Form->ui.pageOptions->windowHeightEdit->setText(wh[1]); + break; + } default: { if (gameType == gtNet && !netSuspend) @@ -313,7 +349,7 @@ QStringList HWGame::getArguments() { QStringList arguments; - QRect resolution = config->vid_Resolution(); + std::pair resolutions = config->vid_ResolutionPair(); QString nick = config->netNick().toUtf8().toBase64(); arguments << "--internal"; //Must be passed as first argument @@ -329,10 +365,14 @@ arguments << QString::number(config->timerInterval()); arguments << "--volume"; arguments << QString::number(config->volume()); + arguments << "--fullscreen-width"; + arguments << QString::number(resolutions.first.width()); + arguments << "--fullscreen-height"; + arguments << QString::number(resolutions.first.height()); arguments << "--width"; - arguments << QString::number(resolution.width()); + arguments << QString::number(resolutions.second.width()); arguments << "--height"; - arguments << QString::number(resolution.height()); + arguments << QString::number(resolutions.second.height()); arguments << "--raw-quality"; arguments << QString::number(config->translateQuality()); arguments << "--stereo";