equal
deleted
inserted
replaced
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 } |