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