void MainMenu::update() { if (m_seedPrompt) { m_seedPrompt->update(); if (m_seedPrompt->isDone()) { startRound(m_specialMode, m_seedPrompt->getSeed()); return; } else if (m_seedPrompt->isCanceled()) { reset(); } } else if (m_start) { m_start = false; showSeedPrompt(); } else if (m_viewScoreboard) { m_viewScoreboard = false; setHidden(true); m_scoreboard.reset(new Scoreboard(this)); } if (m_reset) { m_reset = false; m_scoreboard.reset(); m_seedPrompt.reset(); setHidden(false); } if (m_scoreboard) { m_scoreboard->update(); } }
HWMapContainer::HWMapContainer(QWidget * parent) : QWidget(parent), mainLayout(this), pMap(0), mapgen(MAPGEN_REGULAR), m_previewSize(256, 128) { // don't show preview anything until first show event m_previewEnabled = false; m_missionsViewSetup = false; m_staticViewSetup = false; m_script = QString(); hhSmall.load(":/res/hh_small.png"); hhLimit = 18; templateFilter = 0; m_master = true; linearGrad = QLinearGradient(QPoint(128, 0), QPoint(128, 128)); linearGrad.setColorAt(1, QColor(0, 0, 192)); linearGrad.setColorAt(0, QColor(66, 115, 225)); mainLayout.setContentsMargins(HWApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin), 10, HWApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin), HWApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin)); m_staticMapModel = DataManager::instance().staticMapModel(); m_missionMapModel = DataManager::instance().missionMapModel(); m_themeModel = DataManager::instance().themeModel(); /* Layouts */ QWidget * topWidget = new QWidget(); QHBoxLayout * topLayout = new QHBoxLayout(topWidget); topWidget->setContentsMargins(0, 0, 0, 0); topLayout->setContentsMargins(0, 0, 0, 0); QHBoxLayout * twoColumnLayout = new QHBoxLayout(); QVBoxLayout * leftLayout = new QVBoxLayout(); QVBoxLayout * rightLayout = new QVBoxLayout(); twoColumnLayout->addLayout(leftLayout, 0); twoColumnLayout->addStretch(1); twoColumnLayout->addLayout(rightLayout, 0); QVBoxLayout * drawnControls = new QVBoxLayout(); /* Map type combobox */ topLayout->setSpacing(10); topLayout->addWidget(new QLabel(tr("Map type:")), 0); cType = new QComboBox(this); topLayout->addWidget(cType, 1); cType->insertItem(0, tr("Image map"), MapModel::StaticMap); cType->insertItem(1, tr("Mission map"), MapModel::MissionMap); cType->insertItem(2, tr("Hand-drawn"), MapModel::HandDrawnMap); cType->insertItem(3, tr("Randomly generated"), MapModel::GeneratedMap); cType->insertItem(4, tr("Random maze"), MapModel::GeneratedMaze); cType->insertItem(5, tr("Random perlin"), MapModel::GeneratedPerlin); connect(cType, SIGNAL(currentIndexChanged(int)), this, SLOT(mapTypeChanged(int))); m_childWidgets << cType; /* Randomize button */ topLayout->addStretch(1); const QIcon& lp = QIcon(":/res/dice.png"); QSize sz = lp.actualSize(QSize(65535, 65535)); btnRandomize = new QPushButton(); btnRandomize->setText(tr("Random")); btnRandomize->setIcon(lp); btnRandomize->setFixedHeight(30); btnRandomize->setIconSize(sz); btnRandomize->setFlat(true); btnRandomize->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); connect(btnRandomize, SIGNAL(clicked()), this, SLOT(setRandomMap())); m_childWidgets << btnRandomize; btnRandomize->setStyleSheet("padding: 5px;"); btnRandomize->setFixedHeight(cType->height()); topLayout->addWidget(btnRandomize, 1); /* Seed button */ btnSeed = new QPushButton(parentWidget()->parentWidget()); btnSeed->setText(tr("Seed")); btnSeed->setStyleSheet("padding: 5px;"); btnSeed->setFixedHeight(cType->height()); connect(btnSeed, SIGNAL(clicked()), this, SLOT(showSeedPrompt())); topLayout->addWidget(btnSeed, 0); /* Map preview label */ QLabel * lblMapPreviewText = new QLabel(this); lblMapPreviewText->setText(tr("Map preview:")); leftLayout->addWidget(lblMapPreviewText, 0); /* Map Preview */ mapPreview = new QPushButton(this); mapPreview->setObjectName("mapPreview"); mapPreview->setFlat(true); mapPreview->setFixedSize(256 + 6, 128 + 6); mapPreview->setContentsMargins(0, 0, 0, 0); leftLayout->addWidget(mapPreview, 0); connect(mapPreview, SIGNAL(clicked()), this, SLOT(previewClicked())); /* Bottom-Left layout */ QVBoxLayout * bottomLeftLayout = new QVBoxLayout(); leftLayout->addLayout(bottomLeftLayout, 1); /* Map list label */ lblMapList = new QLabel(this); rightLayout->addWidget(lblMapList, 0); /* Static maps list */ staticMapList = new QListView(this); rightLayout->addWidget(staticMapList, 1); m_childWidgets << staticMapList; /* Mission maps list */ missionMapList = new QListView(this); rightLayout->addWidget(missionMapList, 1); m_childWidgets << missionMapList; /* Map load and edit buttons */ drawnControls->addStretch(1); btnLoadMap = new QPushButton(tr("Load map drawing")); btnLoadMap->setStyleSheet("padding: 20px;"); drawnControls->addWidget(btnLoadMap, 0); m_childWidgets << btnLoadMap; connect(btnLoadMap, SIGNAL(clicked()), this, SLOT(loadDrawing())); btnEditMap = new QPushButton(tr("Edit map drawing")); btnEditMap->setStyleSheet("padding: 20px;"); drawnControls->addWidget(btnEditMap, 0); m_childWidgets << btnEditMap; connect(btnEditMap, SIGNAL(clicked()), this, SIGNAL(drawMapRequested())); drawnControls->addStretch(1); rightLayout->addLayout(drawnControls); /* Generator style list */ generationStyles = new QListWidget(this); new QListWidgetItem(tr("All"), generationStyles); new QListWidgetItem(tr("Small"), generationStyles); new QListWidgetItem(tr("Medium"), generationStyles); new QListWidgetItem(tr("Large"), generationStyles); new QListWidgetItem(tr("Cavern"), generationStyles); new QListWidgetItem(tr("Wacky"), generationStyles); connect(generationStyles, SIGNAL(currentRowChanged(int)), this, SLOT(setTemplateFilter(int))); m_childWidgets << generationStyles; rightLayout->addWidget(generationStyles, 1); /* Maze style list */ mazeStyles = new QListWidget(this); new QListWidgetItem(tr("Small tunnels"), mazeStyles); new QListWidgetItem(tr("Medium tunnels"), mazeStyles); new QListWidgetItem(tr("Large tunnels"), mazeStyles); new QListWidgetItem(tr("Small islands"), mazeStyles); new QListWidgetItem(tr("Medium islands"), mazeStyles); new QListWidgetItem(tr("Large islands"), mazeStyles); connect(mazeStyles, SIGNAL(currentRowChanged(int)), this, SLOT(setMazeSize(int))); m_childWidgets << mazeStyles; rightLayout->addWidget(mazeStyles, 1); /* Mission description */ lblDesc = new QLabel(); lblDesc->setWordWrap(true); lblDesc->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); lblDesc->setAlignment(Qt::AlignTop | Qt::AlignLeft); lblDesc->setStyleSheet("font: 10px;"); bottomLeftLayout->addWidget(lblDesc, 100); /* Add stretch above theme button */ bottomLeftLayout->addStretch(1); /* Theme chooser */ btnTheme = new QPushButton(this); btnTheme->setFlat(true); connect(btnTheme, SIGNAL(clicked()), this, SLOT(showThemePrompt())); m_childWidgets << btnTheme; bottomLeftLayout->addWidget(btnTheme, 0); /* Add everything to main layout */ mainLayout.addWidget(topWidget, 0); mainLayout.addLayout(twoColumnLayout, 1); /* Set defaults */ setRandomSeed(); setMazeSize(0); setTemplateFilter(0); staticMapChanged(m_staticMapModel->index(0, 0)); missionMapChanged(m_missionMapModel->index(0, 0)); changeMapType(MapModel::GeneratedMap); }