diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8713db09..038d2d02 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4695,6 +4695,8 @@ bool FurnaceGUI::loop() { ImGui::EndPopup(); } + drawTutorial(); + ImVec2 newSongMinSize=mobileUI?ImVec2(canvasW-(portrait?0:(60.0*dpiScale)),canvasH-60.0*dpiScale):ImVec2(400.0f*dpiScale,200.0f*dpiScale); ImVec2 newSongMaxSize=ImVec2(canvasW-((mobileUI && !portrait)?(60.0*dpiScale):0),canvasH-(mobileUI?(60.0*dpiScale):0)); ImGui::SetNextWindowSizeConstraints(newSongMinSize,newSongMaxSize); diff --git a/src/gui/gui.h b/src/gui/gui.h index 2a9a6840..b64f2572 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1500,10 +1500,12 @@ class FurnaceGUI { struct Tutorial { int userComesFrom; bool introPlayed; + bool protoWelcome; bool taken[GUI_TUTORIAL_MAX]; Tutorial(): userComesFrom(0), - introPlayed(false) { + introPlayed(false), + protoWelcome(false) { memset(taken,0,GUI_TUTORIAL_MAX*sizeof(bool)); } } tutorial; @@ -1934,6 +1936,7 @@ class FurnaceGUI { void drawFindReplace(); void drawSpoiler(); void drawClock(); + void drawTutorial(); void parseKeybinds(); void promptKey(int which); diff --git a/src/gui/tutorial.cpp b/src/gui/tutorial.cpp index 47b28692..cd77f888 100644 --- a/src/gui/tutorial.cpp +++ b/src/gui/tutorial.cpp @@ -18,13 +18,48 @@ */ #include "gui.h" +#include void FurnaceGUI::syncTutorial() { tutorial.userComesFrom=e->getConfInt("tutUserComesFrom",0); tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false); + tutorial.protoWelcome=e->getConfBool("tutProtoWelcome",false); } void FurnaceGUI::commitTutorial() { e->setConf("tutUserComesFrom",tutorial.userComesFrom); e->setConf("tutIntroPlayed",tutorial.introPlayed); + e->setConf("tutProtoWelcome",tutorial.protoWelcome); +} + +void FurnaceGUI::drawTutorial() { + if (!tutorial.protoWelcome) { + ImGui::OpenPopup("Welcome"); + } + if (ImGui::BeginPopupModal("Welcome",NULL,ImGuiWindowFlags_AlwaysAutoResize|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoTitleBar)) { + ImGui::PushFont(bigFont); + ImGui::SetCursorPosX((ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize("Welcome!").x)*0.5); + ImGui::Text("Welcome!"); + ImGui::PopFont(); + + ImGui::Text("Hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi"); + if (ImGui::Button("Start in Basic Mode")) { + basicMode=true; + tutorial.protoWelcome=true; + commitTutorial(); + ImGui::CloseCurrentPopup(); + } + if (ImGui::Button("Start in Advanced Mode")) { + basicMode=false; + tutorial.protoWelcome=true; + commitTutorial(); + ImGui::CloseCurrentPopup(); + } + + ImGui::SetWindowPos(ImVec2( + (canvasW-ImGui::GetWindowSize().x)*0.5, + (canvasH-ImGui::GetWindowSize().y)*0.5 + )); + ImGui::EndPopup(); + } } \ No newline at end of file