diff --git a/src/ui/GameWorldView.cpp b/src/ui/GameWorldView.cpp index 1f669aa..63ea508 100644 --- a/src/ui/GameWorldView.cpp +++ b/src/ui/GameWorldView.cpp @@ -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; diff --git a/src/ui/GameWorldView.h b/src/ui/GameWorldView.h index 1dfda8c..814659d 100644 --- a/src/ui/GameWorldView.h +++ b/src/ui/GameWorldView.h @@ -56,6 +56,7 @@ signals: public: double gameSpeed() const; + void resetFrameTimer(); public slots: void enterBuilderMode(BuildingType type); diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 7e7f445..b5bf59b 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -188,6 +188,7 @@ void MainWindow::handleEvent(std::shared_ptrapplySchematicChoice(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()