QTfrontend/ui/widget/mapContainer.cpp
changeset 6947 1be3e48e1d53
parent 6946 576c453822bf
child 6960 822f8269e13f
equal deleted inserted replaced
6946:576c453822bf 6947:1be3e48e1d53
   376 void HWMapContainer::intSetMap(const QString & map)
   376 void HWMapContainer::intSetMap(const QString & map)
   377 {
   377 {
   378     int id = 0;
   378     int id = 0;
   379     for(int i = 0; i < chooseMap->count(); i++)
   379     for(int i = 0; i < chooseMap->count(); i++)
   380     {
   380     {
   381         // skip separators
   381         QVariant data = chooseMap->itemData(i, Qt::UserRole + 1);
   382         if (chooseMap->itemData(i, Qt::AccessibleDescriptionRole) == QLatin1String("separator"))
   382         // skip separators etc
       
   383         if (!data.isValid())
   383             continue;
   384             continue;
   384         Q_ASSERT(chooseMap->itemData(i, Qt::UserRole + 1).canConvert<MapModel::MapInfo>());
   385         Q_ASSERT(data.canConvert<MapModel::MapInfo>());
   385         MapModel::MapInfo mapInfo = chooseMap->itemData(i, Qt::UserRole + 1).value<MapModel::MapInfo>();
   386         MapModel::MapInfo mapInfo = data.value<MapModel::MapInfo>();
   386 
   387 
   387         if (mapInfo.name == map)
   388         if (mapInfo.name == map)
   388         {
   389         {
   389             id = i;
   390             id = i;
   390             break;
   391             break;
   417         lvThemes->setCurrentIndex(mdl.at(0));
   418         lvThemes->setCurrentIndex(mdl.at(0));
   418 }
   419 }
   419 
   420 
   420 void HWMapContainer::setRandomMap()
   421 void HWMapContainer::setRandomMap()
   421 {
   422 {
       
   423     int idx;
       
   424 
   422     setRandomSeed();
   425     setRandomSeed();
   423     switch(m_mapInfo.type)
   426     switch(m_mapInfo.type)
   424     {
   427     {
   425         case MapModel::GeneratedMap:
   428         case MapModel::GeneratedMap:
   426         case MapModel::GeneratedMaze:
   429         case MapModel::GeneratedMaze:
   428             break;
   431             break;
   429         case MapModel::HandDrawnMap:
   432         case MapModel::HandDrawnMap:
   430             emit drawMapRequested();
   433             emit drawMapRequested();
   431             break;
   434             break;
   432         case MapModel::MissionMap:
   435         case MapModel::MissionMap:
   433             setRandomMission();
       
   434             break;
       
   435         case MapModel::StaticMap:
   436         case MapModel::StaticMap:
   436             setRandomStatic();
   437             // get random map of same type
       
   438             idx = m_mapModel->randomMap(m_mapInfo.type);
       
   439             chooseMap->setCurrentIndex(idx);
       
   440             mapChanged(idx);
   437             break;
   441             break;
   438         case MapModel::Invalid:
   442         case MapModel::Invalid:
   439             Q_ASSERT(false);
   443             Q_ASSERT(false);
   440     }
   444     }
   441 }
   445 }
   442 
   446 
   443 void HWMapContainer::setRandomStatic()
       
   444 {
       
   445     int i = MAPGEN_MAP + 3 + numMissions + rand() % (chooseMap->count() - MAPGEN_MAP - 3 - numMissions);
       
   446     chooseMap->setCurrentIndex(i);
       
   447     mapChanged(i);
       
   448 }
       
   449 
       
   450 void HWMapContainer::setRandomMission()
       
   451 {
       
   452     int i = MAPGEN_MAP + 2 + rand() % numMissions;
       
   453     chooseMap->setCurrentIndex(i);
       
   454     mapChanged(i);
       
   455 }
       
   456 
   447 
   457 void HWMapContainer::setRandomSeed()
   448 void HWMapContainer::setRandomSeed()
   458 {
   449 {
   459     setSeed(QUuid::createUuid().toString());
   450     setSeed(QUuid::createUuid().toString());
   460     emit seedChanged(m_seed);
   451     emit seedChanged(m_seed);
   602 }
   593 }
   603 
   594 
   604 
   595 
   605 void HWMapContainer::updateModelViews()
   596 void HWMapContainer::updateModelViews()
   606 {
   597 {
   607     numMissions = m_mapModel->missionCount();
   598     // TODO: reselect theme
   608 
   599     // FIXME: issues with generated maps?
   609     if (!m_mapInfo.name.isEmpty())
   600     if (!m_mapInfo.name.isEmpty())
   610         intSetMap(m_mapInfo.name);
   601         intSetMap(m_mapInfo.name);
   611 }
   602 }