QTfrontend/game.cpp
changeset 14462 4c743ef80b1b
parent 14447 b444f100a625
child 14463 bd1db668b7c0
equal deleted inserted replaced
14461:9844450389a4 14462:4c743ef80b1b
    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