QTfrontend/game.cpp
changeset 8350 14b938faec69
parent 8345 9d9b498cfb03
parent 8346 3443e0de2c9d
child 8354 c25bee85d6f8
equal deleted inserted replaced
8345:9d9b498cfb03 8350:14b938faec69
    29 #include "hwconsts.h"
    29 #include "hwconsts.h"
    30 #include "gameuiconfig.h"
    30 #include "gameuiconfig.h"
    31 #include "gamecfgwidget.h"
    31 #include "gamecfgwidget.h"
    32 #include "teamselect.h"
    32 #include "teamselect.h"
    33 #include "proto.h"
    33 #include "proto.h"
       
    34 #include "binds.h"
    34 #include "campaign.h"
    35 #include "campaign.h"
    35 
    36 
    36 #include <QTextStream>
    37 #include <QTextStream>
    37 #include "ThemeModel.h"
    38 #include "ThemeModel.h"
    38 
    39 
    73                 emit HaveRecord(rtNeither, demo);
    74                 emit HaveRecord(rtNeither, demo);
    74     }
    75     }
    75     SetGameState(gsStopped);
    76     SetGameState(gsStopped);
    76 }
    77 }
    77 
    78 
       
    79 void HWGame::addKeyBindings(QByteArray * buf)
       
    80 {
       
    81     for(int i = 0; i < BINDS_NUMBER; i++)
       
    82     {
       
    83         QString value = config->value(QString("Binds/%1").arg(cbinds[i].action), cbinds[i].strbind).toString();
       
    84         if (value.isEmpty() || value == "default") continue;
       
    85         
       
    86         QString bind = QString("edbind " + value + " " + cbinds[i].action);
       
    87         HWProto::addStringToBuffer(*buf, bind);
       
    88     }
       
    89 }
       
    90 
    78 void HWGame::commonConfig()
    91 void HWGame::commonConfig()
    79 {
    92 {
    80     QByteArray buf;
    93     QByteArray buf;
    81     QString gt;
    94     QString gt;
    82     switch (gameType)
    95     switch (gameType)
    89             break;
   102             break;
    90         default:
   103         default:
    91             gt = "TL";
   104             gt = "TL";
    92     }
   105     }
    93     HWProto::addStringToBuffer(buf, gt);
   106     HWProto::addStringToBuffer(buf, gt);
       
   107 
       
   108     addKeyBindings(&buf);
    94 
   109 
    95     buf += gamecfg->getFullConfig();
   110     buf += gamecfg->getFullConfig();
    96 
   111 
    97     if (m_pTeamSelWidget)
   112     if (m_pTeamSelWidget)
    98     {
   113     {
   102             HWProto::addStringToBuffer(buf, QString("eammprob %1").arg(ammostr.mid(cAmmoNumber, cAmmoNumber)));
   117             HWProto::addStringToBuffer(buf, QString("eammprob %1").arg(ammostr.mid(cAmmoNumber, cAmmoNumber)));
   103             HWProto::addStringToBuffer(buf, QString("eammdelay %1").arg(ammostr.mid(2 * cAmmoNumber, cAmmoNumber)));
   118             HWProto::addStringToBuffer(buf, QString("eammdelay %1").arg(ammostr.mid(2 * cAmmoNumber, cAmmoNumber)));
   104             HWProto::addStringToBuffer(buf, QString("eammreinf %1").arg(ammostr.mid(3 * cAmmoNumber, cAmmoNumber)));
   119             HWProto::addStringToBuffer(buf, QString("eammreinf %1").arg(ammostr.mid(3 * cAmmoNumber, cAmmoNumber)));
   105             if(gamecfg->schemeData(15).toBool() || !gamecfg->schemeData(21).toBool()) HWProto::addStringToBuffer(buf, QString("eammstore"));
   120             if(gamecfg->schemeData(15).toBool() || !gamecfg->schemeData(21).toBool()) HWProto::addStringToBuffer(buf, QString("eammstore"));
   106             HWProto::addStringListToBuffer(buf,
   121             HWProto::addStringListToBuffer(buf,
   107                                            team.teamGameConfig(gamecfg->getInitHealth()));
   122                                            team.teamGameConfig(gamecfg->getInitHealth(), config));
   108             ;
   123             ;
   109         }
   124         }
   110     }
   125     }
       
   126     
   111     RawSendIPC(buf);
   127     RawSendIPC(buf);
   112 }
   128 }
   113 
   129 
   114 void HWGame::SendConfig()
   130 void HWGame::SendConfig()
   115 {
   131 {
   118 
   134 
   119 void HWGame::SendQuickConfig()
   135 void HWGame::SendQuickConfig()
   120 {
   136 {
   121     QByteArray teamscfg;
   137     QByteArray teamscfg;
   122     ThemeModel * themeModel = DataManager::instance().themeModel();
   138     ThemeModel * themeModel = DataManager::instance().themeModel();
       
   139 
       
   140     addKeyBindings(&teamscfg);
   123 
   141 
   124     HWProto::addStringToBuffer(teamscfg, "TL");
   142     HWProto::addStringToBuffer(teamscfg, "TL");
   125     HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
   143     HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
   126                                .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount()).data().toString() : "steel"));
   144                                .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount()).data().toString() : "steel"));
   127     HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
   145     HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
   132     team1.setDifficulty(0);
   150     team1.setDifficulty(0);
   133     team1.setColor(0);
   151     team1.setColor(0);
   134     team1.setNumHedgehogs(4);
   152     team1.setNumHedgehogs(4);
   135     HWNamegen::teamRandomNames(team1,true);
   153     HWNamegen::teamRandomNames(team1,true);
   136     HWProto::addStringListToBuffer(teamscfg,
   154     HWProto::addStringListToBuffer(teamscfg,
   137                                    team1.teamGameConfig(100));
   155                                    team1.teamGameConfig(100, config));
   138 
   156 
   139     HWTeam team2;
   157     HWTeam team2;
   140     team2.setDifficulty(4);
   158     team2.setDifficulty(4);
   141     team2.setColor(1);
   159     team2.setColor(1);
   142     team2.setNumHedgehogs(4);
   160     team2.setNumHedgehogs(4);
   143     do
   161     do
   144         HWNamegen::teamRandomNames(team2,true);
   162         HWNamegen::teamRandomNames(team2,true);
   145     while(!team2.name().compare(team1.name()) || !team2.hedgehog(0).Hat.compare(team1.hedgehog(0).Hat));
   163     while(!team2.name().compare(team1.name()) || !team2.hedgehog(0).Hat.compare(team1.hedgehog(0).Hat));
   146     HWProto::addStringListToBuffer(teamscfg,
   164     HWProto::addStringListToBuffer(teamscfg,
   147                                    team2.teamGameConfig(100));
   165                                    team2.teamGameConfig(100, config));
   148 
   166 
   149     HWProto::addStringToBuffer(teamscfg, QString("eammloadt %1").arg(cDefaultAmmoStore->mid(0, cAmmoNumber)));
   167     HWProto::addStringToBuffer(teamscfg, QString("eammloadt %1").arg(cDefaultAmmoStore->mid(0, cAmmoNumber)));
   150     HWProto::addStringToBuffer(teamscfg, QString("eammprob %1").arg(cDefaultAmmoStore->mid(cAmmoNumber, cAmmoNumber)));
   168     HWProto::addStringToBuffer(teamscfg, QString("eammprob %1").arg(cDefaultAmmoStore->mid(cAmmoNumber, cAmmoNumber)));
   151     HWProto::addStringToBuffer(teamscfg, QString("eammdelay %1").arg(cDefaultAmmoStore->mid(2 * cAmmoNumber, cAmmoNumber)));
   169     HWProto::addStringToBuffer(teamscfg, QString("eammdelay %1").arg(cDefaultAmmoStore->mid(2 * cAmmoNumber, cAmmoNumber)));
   152     HWProto::addStringToBuffer(teamscfg, QString("eammreinf %1").arg(cDefaultAmmoStore->mid(3 * cAmmoNumber, cAmmoNumber)));
   170     HWProto::addStringToBuffer(teamscfg, QString("eammreinf %1").arg(cDefaultAmmoStore->mid(3 * cAmmoNumber, cAmmoNumber)));
   153     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));
   171     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));
   154     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));
   172     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));
       
   173     
   155     RawSendIPC(teamscfg);
   174     RawSendIPC(teamscfg);
   156 }
   175 }
   157 
   176 
   158 void HWGame::SendTrainingConfig()
   177 void HWGame::SendTrainingConfig()
   159 {
   178 {
   160     QByteArray traincfg;
   179     QByteArray traincfg;
   161     HWProto::addStringToBuffer(traincfg, "TL");
   180     HWProto::addStringToBuffer(traincfg, "TL");
   162     HWProto::addStringToBuffer(traincfg, "eseed " + QUuid::createUuid().toString());
   181     HWProto::addStringToBuffer(traincfg, "eseed " + QUuid::createUuid().toString());
   163     HWProto::addStringToBuffer(traincfg, "escript " + training);
   182     HWProto::addStringToBuffer(traincfg, "escript " + training);
   164 
   183 
       
   184     addKeyBindings(&traincfg);
       
   185 
   165     RawSendIPC(traincfg);
   186     RawSendIPC(traincfg);
   166 }
   187 }
   167 
   188 
   168 void HWGame::SendCampaignConfig()
   189 void HWGame::SendCampaignConfig()
   169 {
   190 {
   170     QByteArray campaigncfg;
   191     QByteArray campaigncfg;
   171     HWProto::addStringToBuffer(campaigncfg, "TL");
   192     HWProto::addStringToBuffer(campaigncfg, "TL");
   172     HWProto::addStringToBuffer(campaigncfg, "eseed " + QUuid::createUuid().toString());
   193     HWProto::addStringToBuffer(campaigncfg, "eseed " + QUuid::createUuid().toString());
   173 
   194 
   174     HWProto::addStringToBuffer(campaigncfg, "escript " + campaignScript);
   195     HWProto::addStringToBuffer(campaigncfg, "escript " + campaignScript);
       
   196 
       
   197     addKeyBindings(&campaigncfg);
   175 
   198 
   176     RawSendIPC(campaigncfg);
   199     RawSendIPC(campaigncfg);
   177 }
   200 }
   178 
   201 
   179 void HWGame::SendNetConfig()
   202 void HWGame::SendNetConfig()