QTfrontend/game.cpp
changeset 14954 f59b7f5cf6e8
parent 14931 ba5fd934f49b
child 14961 575dbd7b5f43
equal deleted inserted replaced
14953:6c17ef373079 14954:f59b7f5cf6e8
   142 {
   142 {
   143     QByteArray teamscfg;
   143     QByteArray teamscfg;
   144     QAbstractItemModel * themeModel = DataManager::instance().themeModel()->withoutHidden();
   144     QAbstractItemModel * themeModel = DataManager::instance().themeModel()->withoutHidden();
   145 
   145 
   146     HWProto::addStringToBuffer(teamscfg, "TL");
   146     HWProto::addStringToBuffer(teamscfg, "TL");
       
   147 
       
   148     // Random seed
       
   149     HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
       
   150 
       
   151     int r, minhogs, maxhogs;
       
   152 
       
   153     // Random map
       
   154     r = rand() % 10000;
       
   155     if(r < 3000) { // 30%
       
   156         r = 0;
       
   157     } else if(r < 5250) { // 22.5%
       
   158         r = 1;
       
   159     } else if(r < 7500) { // 22.5%
       
   160         r = 2;
       
   161     } else if(r < 8750) { // 12.5%
       
   162         r = 3;
       
   163     } else { // 12.5%
       
   164         r = 4;
       
   165     }
       
   166     switch(r)
       
   167     {
       
   168         // Random
       
   169         default:
       
   170         case 0: {
       
   171             r = rand() % 3;
       
   172             if(r == 0)
       
   173             {
       
   174                 HWProto::addStringToBuffer(teamscfg, "e$template_filter 1");
       
   175                 minhogs = 3;
       
   176                 maxhogs = 4;
       
   177             }
       
   178             else if(r == 1)
       
   179             {
       
   180                 HWProto::addStringToBuffer(teamscfg, "e$template_filter 2");
       
   181                 minhogs = 4;
       
   182                 maxhogs = 5;
       
   183             }
       
   184             else
       
   185             {
       
   186                 HWProto::addStringToBuffer(teamscfg, "e$template_filter 4");
       
   187                 minhogs = 4;
       
   188                 maxhogs = 6;
       
   189             }
       
   190             HWProto::addStringToBuffer(teamscfg, "e$feature_size "+QString::number(rand()%18+4));
       
   191             break;
       
   192         }
       
   193         // Maze
       
   194         case 1: {
       
   195             minhogs = 4;
       
   196             maxhogs = 6;
       
   197             HWProto::addStringToBuffer(teamscfg, "e$mapgen 1");
       
   198             HWProto::addStringToBuffer(teamscfg, "e$template_filter "+QString::number(rand()%6));
       
   199             HWProto::addStringToBuffer(teamscfg, "e$feature_size "+QString::number(rand()%16+6));
       
   200             break;
       
   201         }
       
   202         // Perlin
       
   203         case 2: {
       
   204             minhogs = 4;
       
   205             maxhogs = 6;
       
   206             HWProto::addStringToBuffer(teamscfg, "e$mapgen 2");
       
   207             HWProto::addStringToBuffer(teamscfg, "e$template_filter "+QString::number(rand()%6));
       
   208             HWProto::addStringToBuffer(teamscfg, "e$feature_size "+QString::number(rand()%18+4));
       
   209             break;
       
   210         }
       
   211         // Image map
       
   212         case 3: {
       
   213             minhogs = 4;
       
   214             maxhogs = 6;
       
   215             HWProto::addStringToBuffer(teamscfg, "e$mapgen 3");
       
   216             // Select map from hardcoded list.
       
   217             // TODO: find a more dynamic solution.
       
   218             r = rand() % cQuickGameMaps.count();
       
   219             HWProto::addStringToBuffer(teamscfg, "e$map " + cQuickGameMaps[r]);
       
   220             break;
       
   221         }
       
   222         // Forts
       
   223         case 4: {
       
   224             minhogs = 4;
       
   225             maxhogs = 6;
       
   226             HWProto::addStringToBuffer(teamscfg, "e$mapgen 4");
       
   227             HWProto::addStringToBuffer(teamscfg, "e$feature_size "+QString::number(rand()%20+1));
       
   228             break;
       
   229         }
       
   230     }
       
   231 
       
   232     // Theme
   147     HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
   233     HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
   148                                .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount(), 0).data(ThemeModel::ActualNameRole).toString() : "Nature"));
   234         .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount(), 0).data(ThemeModel::ActualNameRole).toString() : "Nature"));
   149     HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
   235 
   150 
   236     int hogs = minhogs + rand() % (maxhogs-minhogs+1);
   151     HWProto::addStringToBuffer(teamscfg, "e$template_filter 2");
   237 
   152     HWProto::addStringToBuffer(teamscfg, "e$feature_size "+QString::number(rand()%18+4));
   238     // Teams
   153 
   239     // Player team
   154     HWTeam team1;
   240     HWTeam team1;
   155     team1.setDifficulty(0);
   241     team1.setDifficulty(0);
   156     team1.setColor(0);
   242     team1.setColor(0);
   157     team1.setNumHedgehogs(4);
   243     team1.setNumHedgehogs(hogs);
   158     HWNamegen::teamRandomEverything(team1);
   244     HWNamegen::teamRandomEverything(team1);
   159     team1.setVoicepack("Default_qau");
   245     team1.setVoicepack("Default_qau");
   160     HWProto::addStringListToBuffer(teamscfg,
   246 
   161                                    team1.teamGameConfig(100));
   247     // Computer team
   162 
       
   163     HWTeam team2;
   248     HWTeam team2;
   164     team2.setDifficulty(4);
   249     // Random difficulty
       
   250     // TODO: Select difficulty based on previous player successes/failures.
       
   251     r = 1 + rand() % 5;
       
   252     team2.setDifficulty(r);
   165     team2.setColor(1);
   253     team2.setColor(1);
   166     team2.setNumHedgehogs(4);
   254     team2.setNumHedgehogs(hogs);
       
   255     // Make sure the team names are not equal
   167     do
   256     do
   168         HWNamegen::teamRandomEverything(team2);
   257         HWNamegen::teamRandomEverything(team2);
   169     while(!team2.name().compare(team1.name()) || !team2.hedgehog(0).Hat.compare(team1.hedgehog(0).Hat));
   258     while(!team2.name().compare(team1.name()) || !team2.hedgehog(0).Hat.compare(team1.hedgehog(0).Hat));
   170     team2.setVoicepack("Default_qau");
   259     team2.setVoicepack("Default_qau");
   171     HWProto::addStringListToBuffer(teamscfg,
   260 
   172                                    team2.teamGameConfig(100));
   261     // Random team play order
   173 
   262     r = rand() % 2;
       
   263     if(r == 0)
       
   264     {
       
   265         HWProto::addStringListToBuffer(teamscfg, team1.teamGameConfig(100));
       
   266         HWProto::addStringListToBuffer(teamscfg, team2.teamGameConfig(100));
       
   267     }
       
   268     else
       
   269     {
       
   270         HWProto::addStringListToBuffer(teamscfg, team2.teamGameConfig(100));
       
   271         HWProto::addStringListToBuffer(teamscfg, team1.teamGameConfig(100));
       
   272     }
       
   273 
       
   274     // Ammo scheme "Default"
       
   275     // TODO: Random schemes
   174     HWProto::addStringToBuffer(teamscfg, QString("eammloadt %1").arg(cDefaultAmmoStore->mid(0, cAmmoNumber)));
   276     HWProto::addStringToBuffer(teamscfg, QString("eammloadt %1").arg(cDefaultAmmoStore->mid(0, cAmmoNumber)));
   175     HWProto::addStringToBuffer(teamscfg, QString("eammprob %1").arg(cDefaultAmmoStore->mid(cAmmoNumber, cAmmoNumber)));
   277     HWProto::addStringToBuffer(teamscfg, QString("eammprob %1").arg(cDefaultAmmoStore->mid(cAmmoNumber, cAmmoNumber)));
   176     HWProto::addStringToBuffer(teamscfg, QString("eammdelay %1").arg(cDefaultAmmoStore->mid(2 * cAmmoNumber, cAmmoNumber)));
   278     HWProto::addStringToBuffer(teamscfg, QString("eammdelay %1").arg(cDefaultAmmoStore->mid(2 * cAmmoNumber, cAmmoNumber)));
   177     HWProto::addStringToBuffer(teamscfg, QString("eammreinf %1").arg(cDefaultAmmoStore->mid(3 * cAmmoNumber, cAmmoNumber)));
   279     HWProto::addStringToBuffer(teamscfg, QString("eammreinf %1").arg(cDefaultAmmoStore->mid(3 * cAmmoNumber, cAmmoNumber)));
   178     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));
   280     HWProto::addStringToBuffer(teamscfg, QString("eammstore"));