diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index ac2e59fe4..ed7a637d8 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2460,6 +2460,20 @@ int FurnaceGUI::load(String path) { // warn the user showWarning(_("you have loaded a backup!\nif you need to, please save it somewhere.\n\nDO NOT RELY ON THE BACKUP SYSTEM FOR AUTO-SAVE!\nFurnace will not save backups of backups."),GUI_WARN_GENERIC); } + + // if this is a PC module import, warn the user on the first import. + if (!tutorial.importedMOD && e->song.version==DIV_VERSION_MOD) { + showWarning(_("you have imported a ProTracker/SoundTracker/PC module!\nkeep the following in mind:\n\n- Furnace is not a replacement for your MOD player\n- import is not perfect. your song may sound different:\n - E6x pattern loop is not supported\n\nhave fun!"),GUI_WARN_IMPORT); + } + if (!tutorial.importedS3M && e->song.version==DIV_VERSION_S3M) { + showWarning(_("you have imported a Scream Tracker 3 module!\nkeep the following in mind:\n\n- Furnace is not a replacement for your S3M player\n- import is not perfect. your song may sound different:\n - OPL instruments may be detuned\n\nhave fun!"),GUI_WARN_IMPORT); + } + if (!tutorial.importedXM && e->song.version==DIV_VERSION_XM) { + showWarning(_("you have imported a FastTracker II module!\nkeep the following in mind:\n\n- Furnace is not a replacement for your XM player\n- import is not perfect. your song may sound different:\n - envelopes have been converted to macros\n - global volume changes are not supported\n\nhave fun!"),GUI_WARN_IMPORT); + } + if (!tutorial.importedIT && e->song.version==DIV_VERSION_IT) { + showWarning(_("you have imported an Impulse Tracker module!\nkeep the following in mind:\n\n- Furnace is not a replacement for your IT player\n- import is not perfect. your song may sound different:\n - envelopes have been converted to macros\n - global volume changes are not supported\n - channel volume changes are not supported\n - New Note Actions (NNA) are not supported\n\nhave fun!"),GUI_WARN_IMPORT); + } return 0; } @@ -6464,6 +6478,26 @@ bool FurnaceGUI::loop() { ImGui::CloseCurrentPopup(); } break; + case GUI_WARN_IMPORT: + if (ImGui::Button(_("Got it"))) { + switch (e->song.version) { + case DIV_VERSION_MOD: + tutorial.importedMOD=true; + break; + case DIV_VERSION_S3M: + tutorial.importedS3M=true; + break; + case DIV_VERSION_XM: + tutorial.importedXM=true; + break; + case DIV_VERSION_IT: + tutorial.importedIT=true; + break; + } + commitTutorial(); + ImGui::CloseCurrentPopup(); + } + break; case GUI_WARN_GENERIC: if (ImGui::Button(_("OK"))) { ImGui::CloseCurrentPopup(); diff --git a/src/gui/gui.h b/src/gui/gui.h index 57d6403ca..411e8b3d1 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -650,6 +650,7 @@ enum FurnaceGUIWarnings { GUI_WARN_CLEAR_HISTORY, GUI_WARN_CV, GUI_WARN_RESET_CONFIG, + GUI_WARN_IMPORT, GUI_WARN_GENERIC }; @@ -2279,13 +2280,18 @@ class FurnaceGUI { struct Tutorial { bool introPlayed; bool protoWelcome; + bool importedMOD, importedS3M, importedXM, importedIT; Tutorial(): #ifdef SUPPORT_XP introPlayed(true), #else introPlayed(false), #endif - protoWelcome(false) { + protoWelcome(false), + importedMOD(false), + importedS3M(false), + importedXM(false), + importedIT(false) { } } tutorial; diff --git a/src/gui/tutorial.cpp b/src/gui/tutorial.cpp index 640dc795a..4964d6de5 100644 --- a/src/gui/tutorial.cpp +++ b/src/gui/tutorial.cpp @@ -505,11 +505,19 @@ void FurnaceGUI::syncTutorial() { tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false); #endif tutorial.protoWelcome=e->getConfBool("tutProtoWelcome2",false); + tutorial.importedMOD=e->getConfBool("tutImportedMOD",false); + tutorial.importedS3M=e->getConfBool("tutImportedS3M",false); + tutorial.importedXM=e->getConfBool("tutImportedXM",false); + tutorial.importedIT=e->getConfBool("tutImportedIT",false); } void FurnaceGUI::commitTutorial() { e->setConf("tutIntroPlayed",tutorial.introPlayed); e->setConf("tutProtoWelcome2",tutorial.protoWelcome); + e->setConf("tutImportedMOD",tutorial.importedMOD); + e->setConf("tutImportedS3M",tutorial.importedS3M); + e->setConf("tutImportedXM",tutorial.importedXM); + e->setConf("tutImportedIT",tutorial.importedIT); } void FurnaceGUI::initRandomDemoSong() {