--- 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 <QColor>
#include <QStringListModel>
#include <QTextStream>
+#include <utility>
+#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 <QTextStream>
@@ -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<QRect, QRect> 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";