QTfrontend/game.cpp
branch0.9.19
changeset 8924 13ac59499066
parent 8902 a94c074fd483
parent 8901 505307b9735d
child 9080 9b42757d7e71
equal deleted inserted replaced
8904:6ea838b8dcd5 8924:13ac59499066
    36 #include "campaign.h"
    36 #include "campaign.h"
    37 
    37 
    38 #include <QTextStream>
    38 #include <QTextStream>
    39 #include "ThemeModel.h"
    39 #include "ThemeModel.h"
    40 
    40 
       
    41 // last game info
       
    42 QList<QVariant> lastGameStartArgs = QList<QVariant>();
       
    43 GameType lastGameType = gtNone;
       
    44 GameCFGWidget * lastGameCfg = NULL;
       
    45 QString lastGameAmmo = NULL;
       
    46 TeamSelWidget * lastGameTeamSel = NULL;
       
    47 
    41 QString training, campaign, campaignScript, campaignTeam; // TODO: Cleaner solution?
    48 QString training, campaign, campaignScript, campaignTeam; // TODO: Cleaner solution?
    42 
    49 
    43 HWGame::HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget) :
    50 HWGame::HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget) :
    44     TCPBase(true, 0),
    51     TCPBase(true, 0),
    45     ammostr(ammo),
    52     ammostr(ammo),
    46     m_pTeamSelWidget(pTeamSelWidget)
    53     m_pTeamSelWidget(pTeamSelWidget)
    47 {
    54 {
    48     this->config = config;
    55     this->config = config;
    49     this->gamecfg = gamecfg;
    56     this->gamecfg = gamecfg;
    50     netSuspend = false;
    57     netSuspend = false;
       
    58 
       
    59     lastGameCfg = gamecfg;
       
    60     lastGameAmmo = ammo;
       
    61     lastGameTeamSel = pTeamSelWidget;
    51 }
    62 }
    52 
    63 
    53 HWGame::~HWGame()
    64 HWGame::~HWGame()
    54 {
    65 {
    55     SetGameState(gsDestroyed);
    66     SetGameState(gsDestroyed);
   226                 case gtQLocal:
   237                 case gtQLocal:
   227                 {
   238                 {
   228                     SendQuickConfig();
   239                     SendQuickConfig();
   229                     break;
   240                     break;
   230                 }
   241                 }
       
   242                 case gtNone:
   231                 case gtSave:
   243                 case gtSave:
   232                 case gtDemo:
   244                 case gtDemo:
   233                     break;
   245                     break;
   234                 case gtNet:
   246                 case gtNet:
   235                 {
   247                 {
   341     {
   353     {
   342         QByteArray msg = readbuffer.left(msglen + 1);
   354         QByteArray msg = readbuffer.left(msglen + 1);
   343         readbuffer.remove(0, msglen + 1);
   355         readbuffer.remove(0, msglen + 1);
   344         ParseMessage(msg);
   356         ParseMessage(msg);
   345     }
   357     }
   346     
   358 
   347     flushNetBuffer();
   359     flushNetBuffer();
   348 }
   360 }
   349 
   361 
   350 void HWGame::flushNetBuffer()
   362 void HWGame::flushNetBuffer()
   351 {
   363 {
   352     if(m_netSendBuffer.size())
   364     if(m_netSendBuffer.size())
   353     {
   365     {
   354         emit SendNet(m_netSendBuffer);
   366         emit SendNet(m_netSendBuffer);
   355         
   367 
   356         m_netSendBuffer.clear();
   368         m_netSendBuffer.clear();
   357     }
   369     }
   358 }
   370 }
   359 
   371 
   360 QStringList HWGame::getArguments()
   372 QStringList HWGame::getArguments()
   433     SetGameState(gsStarted);
   445     SetGameState(gsStarted);
   434 }
   446 }
   435 
   447 
   436 void HWGame::StartLocal()
   448 void HWGame::StartLocal()
   437 {
   449 {
       
   450     lastGameStartArgs.clear();
       
   451     lastGameType = gtLocal;
       
   452 
   438     gameType = gtLocal;
   453     gameType = gtLocal;
   439     demo.clear();
   454     demo.clear();
   440     Start(false);
   455     Start(false);
   441     SetGameState(gsStarted);
   456     SetGameState(gsStarted);
   442 }
   457 }
   443 
   458 
   444 void HWGame::StartQuick()
   459 void HWGame::StartQuick()
   445 {
   460 {
       
   461     lastGameStartArgs.clear();
       
   462     lastGameType = gtQLocal;
       
   463 
   446     gameType = gtQLocal;
   464     gameType = gtQLocal;
   447     demo.clear();
   465     demo.clear();
   448     Start(false);
   466     Start(false);
   449     SetGameState(gsStarted);
   467     SetGameState(gsStarted);
   450 }
   468 }
   451 
   469 
   452 void HWGame::StartTraining(const QString & file)
   470 void HWGame::StartTraining(const QString & file)
   453 {
   471 {
       
   472     lastGameStartArgs.clear();
       
   473     lastGameStartArgs.append(file);
       
   474     lastGameType = gtTraining;
       
   475 
   454     gameType = gtTraining;
   476     gameType = gtTraining;
   455     training = "Missions/Training/" + file + ".lua";
   477     training = "Missions/Training/" + file + ".lua";
   456     demo.clear();
   478     demo.clear();
   457     Start(false);
   479     Start(false);
   458     SetGameState(gsStarted);
   480     SetGameState(gsStarted);
   459 }
   481 }
   460 
   482 
   461 void HWGame::StartCampaign(const QString & camp, const QString & campScript, const QString & campTeam)
   483 void HWGame::StartCampaign(const QString & camp, const QString & campScript, const QString & campTeam)
   462 {
   484 {
       
   485     lastGameStartArgs.clear();
       
   486     lastGameStartArgs.append(camp);
       
   487     lastGameStartArgs.append(campScript);
       
   488     lastGameStartArgs.append(campTeam);
       
   489     lastGameType = gtCampaign;
       
   490 
   463     gameType = gtCampaign;
   491     gameType = gtCampaign;
   464     campaign = camp;
   492     campaign = camp;
   465     campaignScript = "Missions/Campaign/" + camp + "/" + campScript;
   493     campaignScript = "Missions/Campaign/" + camp + "/" + campScript;
   466     campaignTeam = campTeam;
   494     campaignTeam = campTeam;
   467     demo.clear();
   495     demo.clear();