GUI: warn on first import of a classic module

This commit is contained in:
tildearrow 2024-09-27 15:14:54 -05:00
parent 81dccf8dcc
commit 3a0fd28165
3 changed files with 49 additions and 1 deletions

View file

@ -2460,6 +2460,20 @@ int FurnaceGUI::load(String path) {
// warn the user // 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); 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; return 0;
} }
@ -6464,6 +6478,26 @@ bool FurnaceGUI::loop() {
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
} }
break; 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: case GUI_WARN_GENERIC:
if (ImGui::Button(_("OK"))) { if (ImGui::Button(_("OK"))) {
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();

View file

@ -650,6 +650,7 @@ enum FurnaceGUIWarnings {
GUI_WARN_CLEAR_HISTORY, GUI_WARN_CLEAR_HISTORY,
GUI_WARN_CV, GUI_WARN_CV,
GUI_WARN_RESET_CONFIG, GUI_WARN_RESET_CONFIG,
GUI_WARN_IMPORT,
GUI_WARN_GENERIC GUI_WARN_GENERIC
}; };
@ -2279,13 +2280,18 @@ class FurnaceGUI {
struct Tutorial { struct Tutorial {
bool introPlayed; bool introPlayed;
bool protoWelcome; bool protoWelcome;
bool importedMOD, importedS3M, importedXM, importedIT;
Tutorial(): Tutorial():
#ifdef SUPPORT_XP #ifdef SUPPORT_XP
introPlayed(true), introPlayed(true),
#else #else
introPlayed(false), introPlayed(false),
#endif #endif
protoWelcome(false) { protoWelcome(false),
importedMOD(false),
importedS3M(false),
importedXM(false),
importedIT(false) {
} }
} tutorial; } tutorial;

View file

@ -505,11 +505,19 @@ void FurnaceGUI::syncTutorial() {
tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false); tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false);
#endif #endif
tutorial.protoWelcome=e->getConfBool("tutProtoWelcome2",false); 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() { void FurnaceGUI::commitTutorial() {
e->setConf("tutIntroPlayed",tutorial.introPlayed); e->setConf("tutIntroPlayed",tutorial.introPlayed);
e->setConf("tutProtoWelcome2",tutorial.protoWelcome); 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() { void FurnaceGUI::initRandomDemoSong() {