fix bug where game simulation continues while dialog is shown
This commit is contained in:
@@ -1432,6 +1432,11 @@ double GameWorldView::gameSpeed() const
|
||||
return m_gameSpeedMultiplier;
|
||||
}
|
||||
|
||||
void GameWorldView::resetFrameTimer()
|
||||
{
|
||||
m_frameTimer.restart();
|
||||
}
|
||||
|
||||
void GameWorldView::setGameSpeed(double multiplier)
|
||||
{
|
||||
m_gameSpeedMultiplier = multiplier;
|
||||
|
||||
@@ -56,6 +56,7 @@ signals:
|
||||
|
||||
public:
|
||||
double gameSpeed() const;
|
||||
void resetFrameTimer();
|
||||
|
||||
public slots:
|
||||
void enterBuilderMode(BuildingType type);
|
||||
|
||||
@@ -188,6 +188,7 @@ void MainWindow::handleEvent(std::shared_ptr<const SchematicChoicesAvailableEven
|
||||
m_sim->applySchematicChoice(dialog.getChosenIndex());
|
||||
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
m_gameWorldView->resetFrameTimer();
|
||||
}
|
||||
|
||||
void MainWindow::onEscapeMenuRequested()
|
||||
@@ -218,6 +219,7 @@ void MainWindow::onEscapeMenuRequested()
|
||||
QMessageBox::critical(this, tr("Config Error"),
|
||||
tr("Failed to reload config:\n%1").arg(e.what()));
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
m_gameWorldView->resetFrameTimer();
|
||||
return;
|
||||
}
|
||||
m_gameWorldView->resetForNewGame();
|
||||
@@ -229,6 +231,7 @@ void MainWindow::onEscapeMenuRequested()
|
||||
else
|
||||
{
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
m_gameWorldView->resetFrameTimer();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,6 +244,7 @@ void MainWindow::onLayoutDialogRequested(BuildingId shipyardId)
|
||||
if (!b)
|
||||
{
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
m_gameWorldView->resetFrameTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -272,6 +276,7 @@ void MainWindow::onLayoutDialogRequested(BuildingId shipyardId)
|
||||
}
|
||||
|
||||
m_gameWorldView->setGameSpeed(prevSpeed);
|
||||
m_gameWorldView->resetFrameTimer();
|
||||
}
|
||||
|
||||
void MainWindow::onGameOver()
|
||||
|
||||
Reference in New Issue
Block a user