QTfrontend/mapContainer.cpp
changeset 4497 08df377b4fbc
parent 4494 9585435e20f7
child 4511 df827e70ae63
equal deleted inserted replaced
4488:e83216eba1db 4497:08df377b4fbc
    37 HWMapContainer::HWMapContainer(QWidget * parent) :
    37 HWMapContainer::HWMapContainer(QWidget * parent) :
    38     QWidget(parent),
    38     QWidget(parent),
    39     mainLayout(this),
    39     mainLayout(this),
    40     pMap(0),
    40     pMap(0),
    41     mapgen(MAPGEN_REGULAR),
    41     mapgen(MAPGEN_REGULAR),
    42     maze_size(0)
    42     maze_size(0),
       
    43     drawnMapData(QByteArray::fromBase64("BHoGw4IEegbjAgR6BuwCCnYEaIIJKwRIgglLBEgCCXgERAIJoQQ/AgnBBDsCCeUEMgIKCQQpAgopBCQCCk0ELQIKXwRIAgo/BE0CCiAEVgIJ+wRfAgnOBGgCCaoEbQIJfQRxAgldBHYCCTkEdgIJFARxAgj+BIgCCOwEqAIJEASsAgkwBJ8CCV0ElgIJhgSWAgmqBJYCCcoElgIJ7gSMAgoOBIwCCNAE2YII2QS1AgjsBJYCCPUEdgIJAgRWAgkQBDYCCScEIAIJSwQXAgl0BAkCCZgEAAIJuAP3AgncA/ICCgUD7gIKJAPlAgo/A/cCClYEDgIKbQQkAgqDBDsCCpoEUgIKrARbAghIBP6CCGgE/gIIjAT1AgixBOwCCNUE5wII9QTjAgkUBNkCCTkE0AIJWATHAgl4BMMCCZgEvgIJvAS1AgncBKwCCgAEowIKIASaAgo/BJECCl8EiAIKfwSDAgqfBHYCCscEbQIK5wRoAgr5BGQCCLUGcYIIzAaIAgjnBpoCCQcGrAIJKwa1AglUBroCCXgGvgIJmAa+Agm8Br4CCeAGvgIKAAa6AgogBrUCCj8GqAIKXwaWAgp6Bn8CCpEGaAIKnwZSAgotBZOCCjIFjwIJIgWTggk0BZwCCSsFmIIHYQeBggdhBNmCB2EFBwIHYQUrAgdhBUsCB2EFbwIHYQWqAgdhBc4CB2EF9wIHYQYgAgdhBlICB2EGegIHYQaaAgdhBswCB2EG/gIHYQcQAgZ/BimCBoMGKQIGfwaMggaDBrECBn8G1QIGfwb1AgZ/BwsCBbMFaoIFrgWKAgWqBa4CBaUF6QIFnAYSAgWYBjICBYoGbQIFfQaMAgV0BrUCBWoG3gIFagb+AgVhByICBWEHGQIEmgY2ggS+BkQCBOwGRAIFEAZEAgUwBj8CBVQGOwIFWAY7AgS1BUuCBLUFbwIErAWTAgSjBcECBJ8F+wIEkQYpAgSIBk0CBH8GegIEfwaoAgR6BrUC")
       
    44     )
    43 {
    45 {
    44     hhSmall.load(":/res/hh_small.png");
    46     hhSmall.load(":/res/hh_small.png");
    45     hhLimit = 18;
    47     hhLimit = 18;
    46     templateFilter = 0;
    48     templateFilter = 0;
    47 
    49 
    68 QComboBox::tr("generated map..."));
    70 QComboBox::tr("generated map..."));
    69     chooseMap->addItem(
    71     chooseMap->addItem(
    70 // FIXME - need real icons. Disabling until then
    72 // FIXME - need real icons. Disabling until then
    71 //QIcon(":/res/mapMaze.png"), 
    73 //QIcon(":/res/mapMaze.png"), 
    72 QComboBox::tr("generated maze..."));
    74 QComboBox::tr("generated maze..."));
       
    75 
       
    76     chooseMap->addItem(QComboBox::tr("hand drawn map..."));
       
    77     chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions
       
    78 
    73     chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions
    79     chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions
    74 
    80 
    75     int missionindex = chooseMap->count();
    81     int missionindex = chooseMap->count();
    76     numMissions = 0;
    82     numMissions = 0;
    77     for (int i = 0; i < mapList->size(); ++i) {
    83     for (int i = 0; i < mapList->size(); ++i) {
   250         maze_size_selection->show();
   256         maze_size_selection->show();
   251         emit mapChanged("+maze+");
   257         emit mapChanged("+maze+");
   252         emit mapgenChanged(mapgen);
   258         emit mapgenChanged(mapgen);
   253         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
   259         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
   254         break;
   260         break;
       
   261     case MAPGEN_DRAWN:
       
   262         mapgen = MAPGEN_DRAWN;
       
   263         changeImage();
       
   264         gbThemes->show();
       
   265         lblFilter->hide();
       
   266         CB_TemplateFilter->hide();
       
   267         maze_size_label->hide();
       
   268         maze_size_selection->hide();
       
   269         emit mapChanged("+drawn+");
       
   270         emit mapgenChanged(mapgen);
       
   271         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
       
   272         break;
   255     default:
   273     default:
   256         loadMap(index);
   274         loadMap(index);
   257         gbThemes->hide();
   275         gbThemes->hide();
   258         lblFilter->hide();
   276         lblFilter->hide();
   259         CB_TemplateFilter->hide();
   277         CB_TemplateFilter->hide();
   306     }
   324     }
   307 
   325 
   308     pMap = new HWMap();
   326     pMap = new HWMap();
   309     connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
   327     connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
   310     connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
   328     connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
   311     pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size);
   329     pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size, drawnMapData);
   312 }
   330 }
   313 
   331 
   314 void HWMapContainer::themeSelected(int currentRow)
   332 void HWMapContainer::themeSelected(int currentRow)
   315 {
   333 {
   316     QString theme = Themes->at(currentRow);
   334     QString theme = Themes->at(currentRow);
   317     QList<QVariant> mapInfoRegular;
   335     QList<QVariant> mapInfo;
   318     mapInfoRegular.push_back(QString("+rnd+"));
   336     mapInfo.push_back(QString("+rnd+"));
   319     mapInfoRegular.push_back(theme);
   337     mapInfo.push_back(theme);
   320     mapInfoRegular.push_back(18);
   338     mapInfo.push_back(18);
   321     mapInfoRegular.push_back(false);
   339     mapInfo.push_back(false);
   322     chooseMap->setItemData(0, mapInfoRegular);
   340     chooseMap->setItemData(0, mapInfo);
   323     QList<QVariant> mapInfoMaze;
   341     mapInfo[0] = QString("+maze+");
   324     mapInfoMaze.push_back(QString("+maze+"));
   342     chooseMap->setItemData(1, mapInfo);
   325     mapInfoMaze.push_back(theme);
   343     mapInfo[0] = QString("+drawn+");
   326     mapInfoMaze.push_back(18);
   344     chooseMap->setItemData(2, mapInfo);
   327     mapInfoMaze.push_back(false);
       
   328     chooseMap->setItemData(1, mapInfoMaze);
       
   329     gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
   345     gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
   330     emit themeChanged(theme);
   346     emit themeChanged(theme);
   331 }
   347 }
   332 
   348 
   333 QString HWMapContainer::getCurrentSeed() const
   349 QString HWMapContainer::getCurrentSeed() const
   335     return m_seed;
   351     return m_seed;
   336 }
   352 }
   337 
   353 
   338 QString HWMapContainer::getCurrentMap() const
   354 QString HWMapContainer::getCurrentMap() const
   339 {
   355 {
   340     if(chooseMap->currentIndex() <= 1) return QString();
   356     if(chooseMap->currentIndex() <= 2) return QString();
   341     return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
   357     return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
   342 }
   358 }
   343 
   359 
   344 QString HWMapContainer::getCurrentTheme() const
   360 QString HWMapContainer::getCurrentTheme() const
   345 {
   361 {
   374         changeImage();
   390         changeImage();
   375 }
   391 }
   376 
   392 
   377 void HWMapContainer::setMap(const QString & map)
   393 void HWMapContainer::setMap(const QString & map)
   378 {
   394 {
   379     if(map == "+rnd+" || map == "+maze+")
   395     if(map == "+rnd+" || map == "+maze+" || map == "+drawn+")
   380     {
   396     {
   381         changeImage();
   397         changeImage();
   382         return;
   398         return;
   383     }
   399     }
   384 
   400 
   414     setRandomSeed();
   430     setRandomSeed();
   415     switch(chooseMap->currentIndex())
   431     switch(chooseMap->currentIndex())
   416     {
   432     {
   417     case MAPGEN_REGULAR:
   433     case MAPGEN_REGULAR:
   418     case MAPGEN_MAZE:
   434     case MAPGEN_MAZE:
       
   435     case MAPGEN_DRAWN:
   419         setRandomTheme();
   436         setRandomTheme();
   420         break;
   437         break;
   421     default:
   438     default:
   422         if(chooseMap->currentIndex() < numMissions + 3)
   439         if(chooseMap->currentIndex() < numMissions + 4)
   423             setRandomMission();
   440             setRandomMission();
   424         else
   441         else
   425             setRandomStatic();
   442             setRandomStatic();
   426         break;
   443         break;
   427     }
   444     }
   487 {
   504 {
   488     mapgen = m;
   505     mapgen = m;
   489     emit mapgenChanged(m);
   506     emit mapgenChanged(m);
   490     changeImage();
   507     changeImage();
   491 }
   508 }
       
   509 
       
   510 QByteArray HWMapContainer::getDrawnMapData()
       
   511 {
       
   512     return drawnMapData;
       
   513 }