42 #include "ThemeModel.h" |
42 #include "ThemeModel.h" |
43 |
43 |
44 // last game info |
44 // last game info |
45 QList<QVariant> lastGameStartArgs = QList<QVariant>(); |
45 QList<QVariant> lastGameStartArgs = QList<QVariant>(); |
46 GameType lastGameType = gtNone; |
46 GameType lastGameType = gtNone; |
47 QString lastTrainingSubFolder = NULL; |
|
48 GameCFGWidget * lastGameCfg = NULL; |
47 GameCFGWidget * lastGameCfg = NULL; |
49 QString lastGameAmmo = NULL; |
48 QString lastGameAmmo = NULL; |
50 TeamSelWidget * lastGameTeamSel = NULL; |
49 TeamSelWidget * lastGameTeamSel = NULL; |
51 |
50 |
52 QString training, campaign, campaignScript, campaignTeam; // TODO: Cleaner solution? |
51 QString training, trainingTeam, campaign, campaignScript, campaignTeam; // TODO: Cleaner solution? |
53 |
52 |
54 HWGame::HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget) : |
53 HWGame::HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget) : |
55 TCPBase(true, 0), |
54 TCPBase(true, 0), |
56 ammostr(ammo), |
55 ammostr(ammo), |
57 m_pTeamSelWidget(pTeamSelWidget) |
56 m_pTeamSelWidget(pTeamSelWidget) |
303 { |
302 { |
304 if (msg.at(2) == '?') |
303 if (msg.at(2) == '?') |
305 sendCampaignVar(msg.right(msg.size() - 3)); |
304 sendCampaignVar(msg.right(msg.size() - 3)); |
306 else if (msg.at(2) == '!') |
305 else if (msg.at(2) == '!') |
307 writeCampaignVar(msg.right(msg.size() - 3)); |
306 writeCampaignVar(msg.right(msg.size() - 3)); |
|
307 break; |
|
308 } |
|
309 case 'v': |
|
310 { |
|
311 if (msg.at(2) == '?') |
|
312 sendMissionVar(msg.right(msg.size() - 3)); |
|
313 else if (msg.at(2) == '!') |
|
314 writeMissionVar(msg.right(msg.size() - 3)); |
308 break; |
315 break; |
309 } |
316 } |
310 case 'W': |
317 case 'W': |
311 { |
318 { |
312 // fetch new window resolution via IPC and save it in the settings |
319 // fetch new window resolution via IPC and save it in the settings |
498 demo.clear(); |
505 demo.clear(); |
499 Start(false); |
506 Start(false); |
500 SetGameState(gsStarted); |
507 SetGameState(gsStarted); |
501 } |
508 } |
502 |
509 |
503 void HWGame::StartTraining(const QString & file, const QString & subFolder) |
510 void HWGame::StartTraining(const QString & file, const QString & subFolder, const QString & trainTeam) |
504 { |
511 { |
505 lastGameStartArgs.clear(); |
512 lastGameStartArgs.clear(); |
506 lastGameStartArgs.append(file); |
513 lastGameStartArgs.append(file); |
|
514 lastGameStartArgs.append(subFolder); |
|
515 lastGameStartArgs.append(trainTeam); |
507 lastGameType = gtTraining; |
516 lastGameType = gtTraining; |
508 lastTrainingSubFolder = subFolder; |
|
509 |
517 |
510 gameType = gtTraining; |
518 gameType = gtTraining; |
511 |
519 |
512 training = "Missions/" + subFolder + "/" + file + ".lua"; |
520 training = "Missions/" + subFolder + "/" + file + ".lua"; |
|
521 trainingTeam = trainTeam; |
513 demo.clear(); |
522 demo.clear(); |
514 Start(false); |
523 Start(false); |
515 SetGameState(gsStarted); |
524 SetGameState(gsStarted); |
516 } |
525 } |
517 |
526 |
572 QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0); |
581 QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0); |
573 teamfile.setIniCodec("UTF-8"); |
582 teamfile.setIniCodec("UTF-8"); |
574 teamfile.setValue("Campaign " + campaign + "/" + varToWrite, varValue); |
583 teamfile.setValue("Campaign " + campaign + "/" + varToWrite, varValue); |
575 } |
584 } |
576 |
585 |
|
586 void HWGame::sendMissionVar(const QByteArray &varToSend) |
|
587 { |
|
588 QString varToFind = QString::fromUtf8(varToSend); |
|
589 QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(trainingTeam), QSettings::IniFormat, 0); |
|
590 teamfile.setIniCodec("UTF-8"); |
|
591 QString varValue = teamfile.value("Mission " + training + "/" + varToFind, "").toString(); |
|
592 QByteArray command; |
|
593 HWProto::addStringToBuffer(command, "v." + varValue); |
|
594 RawSendIPC(command); |
|
595 } |
|
596 |
|
597 void HWGame::writeMissionVar(const QByteArray & varVal) |
|
598 { |
|
599 int i = varVal.indexOf(" "); |
|
600 if(i < 0) |
|
601 return; |
|
602 |
|
603 QString varToWrite = QString::fromUtf8(varVal.left(i)); |
|
604 QString varValue = QString::fromUtf8(varVal.mid(i + 1)); |
|
605 |
|
606 QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(trainingTeam), QSettings::IniFormat, 0); |
|
607 teamfile.setIniCodec("UTF-8"); |
|
608 teamfile.setValue("Mission " + training + "/" + varToWrite, varValue); |
|
609 } |
|
610 |