From 16adc1fb1b96352fc7c913fa5a06793ec17b9fde Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 12 Jun 2023 02:18:50 -0500 Subject: [PATCH] GUI: fix intro carry-over in specific situations issue #1149 --- src/gui/gui.cpp | 1 + src/gui/gui.h | 2 +- src/gui/intro.cpp | 10 ++++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 673db6f1..16a05582 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6953,6 +6953,7 @@ FurnaceGUI::FurnaceGUI(): mustClear(2), initialScreenWipe(1.0f), introSkipDo(false), + introStopped(false), curTutorial(-1), curTutorialStep(0) { // value keys diff --git a/src/gui/gui.h b/src/gui/gui.h index f5b58109..50e90e5e 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2029,7 +2029,7 @@ class FurnaceGUI { double monitorPos; int mustClear; float initialScreenWipe; - bool introSkipDo; + bool introSkipDo, introStopped; ImVec2 introMin, introMax; // tutorial diff --git a/src/gui/intro.cpp b/src/gui/intro.cpp index 42d36957..8ebbe020 100644 --- a/src/gui/intro.cpp +++ b/src/gui/intro.cpp @@ -19,6 +19,7 @@ #define _USE_MATH_DEFINES #include "gui.h" +#include "../ta-log.h" #include "imgui_internal.h" #include @@ -73,6 +74,8 @@ void FurnaceGUI::drawImage(ImDrawList* dl, FurnaceGUIImages image, const ImVec2& } void FurnaceGUI::endIntroTune() { + if (introStopped) return; + logV("ending intro"); stop(); if (curFileName.empty()) { e->createNewFromDefaults(); @@ -96,6 +99,7 @@ void FurnaceGUI::endIntroTune() { cursor=SelectionPoint(); updateWindowTitle(); updateScroll(0); + introStopped=true; } void FurnaceGUI::drawIntro(double introTime, bool monitor) { @@ -291,7 +295,7 @@ void FurnaceGUI::drawIntro(double introTime, bool monitor) { if (introSkipDo) { introSkip+=ImGui::GetIO().DeltaTime; if (introSkip>=0.5) { - if (e->isPlaying()) endIntroTune(); + if (!shortIntro) endIntroTune(); introPos=0.1; if (introSkip>=0.75) introPos=12.0; } @@ -318,7 +322,7 @@ void FurnaceGUI::drawIntro(double introTime, bool monitor) { e->setRepeatPattern(false); play(); } - if (e->isPlaying() && introPos>=10.0 && !shortIntro) endIntroTune(); + if (introPos>=10.0 && !shortIntro) endIntroTune(); introPos+=ImGui::GetIO().DeltaTime; if (introPos>=(shortIntro?1.0:11.0)) { introPos=12.0; @@ -326,5 +330,7 @@ void FurnaceGUI::drawIntro(double introTime, bool monitor) { commitTutorial(); } } + } else if (!shortIntro) { + endIntroTune(); } }