From 341201fc7d3aadc6077c1268f4b907f49dca9a3c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 7 Jan 2026 13:39:43 -0500 Subject: [PATCH] begin the trial --- src/gui/gui.cpp | 18 +++++++++++++++++- src/gui/gui.h | 3 +++ src/gui/tutorial.cpp | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index a1261215a..90ddadcaf 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4933,7 +4933,12 @@ bool FurnaceGUI::loop() { } ImGui::EndMenu(); } - ImGui::Checkbox("New Pattern",&newPatternRenderer); + pushToggleColors(newPatternRenderer); + if (ImGui::SmallButton("NPR")) { + newPatternRenderer=!newPatternRenderer; + } + ImGui::SetItemTooltip(_("New Pattern Renderer")); + popToggleColors(); ImGui::SameLine(); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PLAYBACK_STAT]); if (e->isPlaying() && settings.playbackTime) { @@ -6793,6 +6798,13 @@ bool FurnaceGUI::loop() { ImGui::CloseCurrentPopup(); } break; + case GUI_WARN_NPR: + if (ImGui::Button(_("Got it"))) { + tutorial.nprFieldTrial=true; + commitTutorial(); + ImGui::CloseCurrentPopup(); + } + break; case GUI_WARN_GENERIC: if (ImGui::Button(_("OK"))) { ImGui::CloseCurrentPopup(); @@ -7676,6 +7688,10 @@ bool FurnaceGUI::init() { syncSettings(); syncTutorial(); + if (!tutorial.nprFieldTrial && newPatternRenderer) { + showWarning(_("welcome to the New Pattern Renderer!\nit should be lighter on your CPU.\n\nif you find an issue, you can go back to the old pattern renderer by clicking the NPR button (next to Help).\nmake sure to report it!\n\nthank you!"),GUI_WARN_NPR); + } + recentFile.clear(); for (int i=0; igetConfString(fmt::sprintf("recentFile%d",i),""); diff --git a/src/gui/gui.h b/src/gui/gui.h index 9b1ec5e37..e8df00eec 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -687,6 +687,7 @@ enum FurnaceGUIWarnings { GUI_WARN_CV, GUI_WARN_RESET_CONFIG, GUI_WARN_IMPORT, + GUI_WARN_NPR, GUI_WARN_GENERIC }; @@ -2372,6 +2373,7 @@ class FurnaceGUI { bool introPlayed; bool protoWelcome; bool importedMOD, importedS3M, importedXM, importedIT; + bool nprFieldTrial; double popupTimer; Tutorial(): #ifdef SUPPORT_XP @@ -2384,6 +2386,7 @@ class FurnaceGUI { importedS3M(false), importedXM(false), importedIT(false), + nprFieldTrial(false), popupTimer(10.0f) { } } tutorial; diff --git a/src/gui/tutorial.cpp b/src/gui/tutorial.cpp index d1d5901a4..f61405edf 100644 --- a/src/gui/tutorial.cpp +++ b/src/gui/tutorial.cpp @@ -692,6 +692,7 @@ void FurnaceGUI::syncTutorial() { tutorial.importedS3M=e->getConfBool("tutImportedS3M",false); tutorial.importedXM=e->getConfBool("tutImportedXM",false); tutorial.importedIT=e->getConfBool("tutImportedIT",false); + tutorial.nprFieldTrial=e->getConfBool("tutNPRFieldTrial",false); } void FurnaceGUI::commitTutorial() { @@ -701,6 +702,7 @@ void FurnaceGUI::commitTutorial() { e->setConf("tutImportedS3M",tutorial.importedS3M); e->setConf("tutImportedXM",tutorial.importedXM); e->setConf("tutImportedIT",tutorial.importedIT); + e->setConf("tutNPRFieldTrial",tutorial.nprFieldTrial); } void FurnaceGUI::initRandomDemoSong() {