implement escape menu
This commit is contained in:
@@ -52,6 +52,9 @@ MainWindow::MainWindow(Simulation* sim, const GameConfig* config,
|
||||
connect(m_gameWorldView, SIGNAL(gameOver()),
|
||||
this, SLOT(onGameOver()));
|
||||
|
||||
connect(m_gameWorldView, SIGNAL(escapeMenuRequested()),
|
||||
this, SLOT(onEscapeMenuRequested()));
|
||||
|
||||
// Signals: build grid → game world
|
||||
connect(m_buildButtonGrid, SIGNAL(buildingTypeSelected(BuildingType)),
|
||||
m_gameWorldView, SLOT(enterBuilderMode(BuildingType)));
|
||||
@@ -95,6 +98,35 @@ void MainWindow::onStateUpdated(Tick /*tick*/, int blocks, double /*speed*/)
|
||||
m_buildButtonGrid->updateAffordability(blocks);
|
||||
}
|
||||
|
||||
void MainWindow::onEscapeMenuRequested()
|
||||
{
|
||||
const double prevSpeed = m_gameWorldView->gameSpeed();
|
||||
m_gameWorldView->setGameSpeed(0.0);
|
||||
|
||||
QMessageBox box(this);
|
||||
box.setWindowTitle("Paused");
|
||||
QPushButton* continueBtn = box.addButton("Continue", QMessageBox::AcceptRole);
|
||||
QPushButton* restartBtn = box.addButton("Restart", QMessageBox::ResetRole);
|
||||
QPushButton* quitBtn = box.addButton("Quit", QMessageBox::DestructiveRole);
|
||||
box.setEscapeButton(continueBtn);
|
||||
box.exec();
|
||||
|
||||
QAbstractButton* clicked = box.clickedButton();
|
||||
if (clicked == restartBtn)
|
||||
{
|
||||
m_sim->reset();
|
||||
m_gameWorldView->resetForNewGame();
|
||||
}
|
||||
else if (clicked == quitBtn)
|
||||
{
|
||||
close();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onGameOver()
|
||||
{
|
||||
const Tick tick = m_sim->currentTick();
|
||||
|
||||
Reference in New Issue
Block a user