QTfrontend/mapContainer.cpp
changeset 3133 1ab5f18f4df8
parent 3009 8f4e6de8e4ef
child 3141 70d65353bd60
equal deleted inserted replaced
3132:72ad441d4c2f 3133:1ab5f18f4df8
    35 #include "igbox.h"
    35 #include "igbox.h"
    36 
    36 
    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),
       
    42     maze_size(0)
    41 {
    43 {
    42     hhSmall.load(":/res/hh_small.png");
    44     hhSmall.load(":/res/hh_small.png");
    43     hhLimit = 18;
    45     hhLimit = 18;
    44     templateFilter = 0;
    46     templateFilter = 0;
    45 
    47 
    58     connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme()));
    60     connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme()));
    59 
    61 
    60     chooseMap = new QComboBox(this);
    62     chooseMap = new QComboBox(this);
    61     chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    63     chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    62     chooseMap->addItem(QComboBox::tr("generated map..."));
    64     chooseMap->addItem(QComboBox::tr("generated map..."));
       
    65     chooseMap->addItem(QComboBox::tr("generated maze..."));
    63     for (int i = 0; i < mapList->size(); ++i) {
    66     for (int i = 0; i < mapList->size(); ++i) {
    64         QString map = (*mapList)[i];
    67         QString map = (*mapList)[i];
    65         QFile mapCfgFile(
    68         QFile mapCfgFile(
    66                 QString("%1/Maps/%2/map.cfg")
    69                 QString("%1/Maps/%2/map.cfg")
    67                 .arg(datadir->absolutePath())
    70                 .arg(datadir->absolutePath())
   108     CB_TemplateFilter->addItem(tr("Wacky"), 5);
   111     CB_TemplateFilter->addItem(tr("Wacky"), 5);
   109     mainLayout.addWidget(CB_TemplateFilter, 2, 1);
   112     mainLayout.addWidget(CB_TemplateFilter, 2, 1);
   110 
   113 
   111     connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int)));
   114     connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int)));
   112 
   115 
       
   116     maze_size_label = new QLabel("Size", this);
       
   117     mainLayout.addWidget(maze_size_label, 2, 0);
       
   118     maze_size_label->hide();
       
   119     maze_size_selection = new QComboBox(this);
       
   120     maze_size_selection->addItem(tr("Small"), 0);
       
   121     maze_size_selection->addItem(tr("Medium"), 1);
       
   122     maze_size_selection->addItem(tr("Large"), 2);
       
   123     mainLayout.addWidget(maze_size_selection, 2, 1);
       
   124     maze_size_selection->hide();
       
   125     connect(maze_size_selection, SIGNAL(currentIndexChanged(int)), this, SLOT(setMaze_size(int)));
       
   126 
   113     gbThemes = new IconedGroupBox(this);
   127     gbThemes = new IconedGroupBox(this);
   114     gbThemes->setTitleTextPadding(60);
   128     gbThemes->setTitleTextPadding(60);
   115     gbThemes->setContentTopPadding(6);
   129     gbThemes->setContentTopPadding(6);
   116     gbThemes->setTitle(tr("Themes"));
   130     gbThemes->setTitle(tr("Themes"));
   117 
   131 
   170     linearGrad.setColorAt(0, QColor(66, 115, 225));
   184     linearGrad.setColorAt(0, QColor(66, 115, 225));
   171     p.fillRect(QRect(0, 0, 256, 128), linearGrad);
   185     p.fillRect(QRect(0, 0, 256, 128), linearGrad);
   172     p.drawPixmap(QPoint(0, 0), px);
   186     p.drawPixmap(QPoint(0, 0), px);
   173 
   187 
   174     addInfoToPreview(pxres);
   188     addInfoToPreview(pxres);
   175     chooseMap->setCurrentIndex(0);
   189     chooseMap->setCurrentIndex(mapgen);
   176     pMap = 0;
   190     pMap = 0;
   177 }
   191 }
   178 
   192 
   179 void HWMapContainer::setHHLimit(int newHHLimit)
   193 void HWMapContainer::setHHLimit(int newHHLimit)
   180 {
   194 {
   181     hhLimit = newHHLimit;
   195     hhLimit = newHHLimit;
   182 }
   196 }
   183 
   197 
   184 void HWMapContainer::mapChanged(int index)
   198 void HWMapContainer::mapChanged(int index)
   185 {
   199 {
   186     if(!index) {
   200     switch(index) {
       
   201     case MAPGEN_REGULAR:
       
   202         mapgen = MAPGEN_REGULAR;
   187         changeImage();
   203         changeImage();
   188         gbThemes->show();
   204         gbThemes->show();
   189         lblFilter->show();
   205         lblFilter->show();
   190         CB_TemplateFilter->show();
   206         CB_TemplateFilter->show();
       
   207         maze_size_label->hide();
       
   208         maze_size_selection->hide();
   191         emit mapChanged("+rnd+");
   209         emit mapChanged("+rnd+");
   192         emit themeChanged(chooseMap->itemData(0).toList()[1].toString());
   210         emit mapgenChanged(mapgen);
   193     } else
   211         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
   194     {
   212         break;
       
   213     case MAPGEN_MAZE:
       
   214         mapgen = MAPGEN_MAZE;
       
   215         changeImage();
       
   216         gbThemes->show();
       
   217         lblFilter->hide();
       
   218         CB_TemplateFilter->hide();
       
   219         maze_size_label->show();
       
   220         maze_size_selection->show();
       
   221         emit mapChanged("+rnd+");
       
   222         emit mapgenChanged(mapgen);
       
   223         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
       
   224         break;
       
   225     default:
   195         loadMap(index);
   226         loadMap(index);
   196         gbThemes->hide();
   227         gbThemes->hide();
   197         lblFilter->hide();
   228         lblFilter->hide();
   198         CB_TemplateFilter->hide();
   229         CB_TemplateFilter->hide();
       
   230         maze_size_label->hide();
       
   231         maze_size_selection->hide();
   199         emit mapChanged(chooseMap->itemData(index).toList()[0].toString());
   232         emit mapChanged(chooseMap->itemData(index).toList()[0].toString());
   200     }
   233     }
   201 }
   234 }
   202 
   235 
   203 void HWMapContainer::loadMap(int index)
   236 void HWMapContainer::loadMap(int index)
   243     }
   276     }
   244 
   277 
   245     pMap = new HWMap();
   278     pMap = new HWMap();
   246     connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
   279     connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
   247     connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
   280     connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
   248     pMap->getImage(m_seed.toStdString(), getTemplateFilter());
   281     pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size);
   249 }
   282 }
   250 
   283 
   251 void HWMapContainer::themeSelected(int currentRow)
   284 void HWMapContainer::themeSelected(int currentRow)
   252 {
   285 {
   253     QString theme = Themes->at(currentRow);
   286     QString theme = Themes->at(currentRow);
   255     mapInfo.push_back(QString("+rnd+"));
   288     mapInfo.push_back(QString("+rnd+"));
   256     mapInfo.push_back(theme);
   289     mapInfo.push_back(theme);
   257     mapInfo.push_back(18);
   290     mapInfo.push_back(18);
   258     mapInfo.push_back(false);
   291     mapInfo.push_back(false);
   259     chooseMap->setItemData(0, mapInfo);
   292     chooseMap->setItemData(0, mapInfo);
       
   293     chooseMap->setItemData(1, mapInfo);
   260     gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
   294     gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
   261     emit themeChanged(theme);
   295     emit themeChanged(theme);
   262 }
   296 }
   263 
   297 
   264 QString HWMapContainer::getCurrentSeed() const
   298 QString HWMapContainer::getCurrentSeed() const
   266     return m_seed;
   300     return m_seed;
   267 }
   301 }
   268 
   302 
   269 QString HWMapContainer::getCurrentMap() const
   303 QString HWMapContainer::getCurrentMap() const
   270 {
   304 {
   271     if(!chooseMap->currentIndex()) return QString();
   305     if(chooseMap->currentIndex() <= 1) return QString();
   272     return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
   306     return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
   273 }
   307 }
   274 
   308 
   275 QString HWMapContainer::getCurrentTheme() const
   309 QString HWMapContainer::getCurrentTheme() const
   276 {
   310 {
   362 {
   396 {
   363     emit newTemplateFilter(filter);
   397     emit newTemplateFilter(filter);
   364     changeImage();
   398     changeImage();
   365 }
   399 }
   366 
   400 
       
   401 MapGenerator HWMapContainer::get_mapgen(void) const
       
   402 {
       
   403     return mapgen;
       
   404 }
       
   405 
       
   406 int HWMapContainer::get_maze_size(void) const
       
   407 {
       
   408     return maze_size;
       
   409 }
       
   410 
       
   411 void HWMapContainer::setMaze_size(int size)
       
   412 {
       
   413     maze_size = size;
       
   414     emit maze_sizeChanged(size);
       
   415 //    emit mapChanged("+rnd+");
       
   416     changeImage();
       
   417 }
       
   418 
       
   419 void HWMapContainer::setMapgen(MapGenerator m)
       
   420 {
       
   421     mapgen = m;
       
   422     emit mapgenChanged(m);
       
   423 //    emit mapChanged("+rnd+");
       
   424     changeImage();
       
   425 }