From 76deb8266577712a8241a3e35adaf55d6f4c0907 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 2 Apr 2023 02:31:37 -0500 Subject: [PATCH] Revert "prepare for Furnace Pro" This reverts commit 6fe8bea50e5b2625c326d09ff12fe30410ee7083. --- res/watermark.raw | Bin 193024 -> 0 bytes res/watermark2.raw | Bin 11025 -> 0 bytes src/engine/engine.cpp | 2 - src/engine/engine.h | 4 +- src/engine/fileOps.cpp | 11 +- src/gui/cursor.cpp | 10 -- src/gui/dataList.cpp | 4 - src/gui/doAction.cpp | 84 +-------- src/gui/gui.cpp | 386 +---------------------------------------- src/gui/gui.h | 10 +- src/gui/pattern.cpp | 18 +- src/gui/settings.cpp | 7 - src/gui/songInfo.cpp | 19 +- src/gui/speed.cpp | 245 +++++++++++++------------- src/gui/subSongs.cpp | 43 ++--- src/log.cpp | 8 - src/ta-log.h | 1 - 17 files changed, 163 insertions(+), 689 deletions(-) delete mode 100644 res/watermark.raw delete mode 100644 res/watermark2.raw diff --git a/res/watermark.raw b/res/watermark.raw deleted file mode 100644 index e61c2e12ebbab864d5f5dd64b12c931c9ed741b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193024 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

y2oKj3;~!i;%V|H_#K{c4}^S)DBlY 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 diff --git a/res/watermark2.raw b/res/watermark2.raw deleted file mode 100644 index fde324afd8979c3db8fe4f706a557336a79bc0ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11025 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 ORYm&_sciRDy752F--fgR diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index da216c20..00805411 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -4516,8 +4516,6 @@ void DivEngine::preInit() { logI("Furnace version " DIV_VERSION "."); loadConf(); - - if (getConfInt("seriousMode",0)) dejarteArriba=false; } bool DivEngine::init() { diff --git a/src/engine/engine.h b/src/engine/engine.h index 12546ba2..0f5c4090 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -53,8 +53,8 @@ #define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock(); #define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false; -#define DIV_VERSION "Pro" -#define DIV_ENGINE_VERSION 146 +#define DIV_VERSION "dev145" +#define DIV_ENGINE_VERSION 145 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 4e8288e1..e1ae97b1 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -1642,13 +1642,6 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { ds.version=reader.readS(); logI("module version %d (0x%.2x)",ds.version,ds.version); - if (ds.version==146 && dejarteArriba) { - logE("UNREGISTERED! register to open."); - lastError="this file was saved with an UNREGISTERED version of Furnace Pro. in order to open, you need to register."; - delete[] file; - return false; - } - if (ds.version>DIV_ENGINE_VERSION) { logW("this module was created with a more recent version of Furnace!"); addWarning("this module was created with a more recent version of Furnace!"); @@ -4839,7 +4832,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { if (!notPrimary) { song.isDMF=false; - song.version=dejarteArriba?DIV_ENGINE_VERSION:145; + song.version=DIV_ENGINE_VERSION; } SafeWriter* w=new SafeWriter; @@ -4849,7 +4842,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->write(DIV_FUR_MAGIC,16); // write version - w->writeS(dejarteArriba?DIV_ENGINE_VERSION:145); + w->writeS(DIV_ENGINE_VERSION); // reserved w->writeS(0); diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index 7b786405..09da1b25 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -212,16 +212,6 @@ void FurnaceGUI::moveCursor(int x, int y, bool select) { finishSelection(); } - if (dejarteArriba) { - if (!(rand()%7)) { - x=-x; - y=-y; - } - if (!(rand()%25)) { - play(); - } - } - DETERMINE_FIRST_LAST; curNibble=false; diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index db27e7fd..2a37c7e8 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -24,7 +24,6 @@ #include "guiConst.h" #include #include -#include "../ta-log.h" const char* sampleNote[12]={ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" @@ -514,7 +513,6 @@ void FurnaceGUI::drawInsList(bool asChild) { } ImGui::PopID(); } - if (dejarteArriba) ImGui::TextWrapped("%d left - register to remove limit!",16-e->song.insLen); if (settings.unifiedDataView) { ImGui::Unindent(); @@ -775,7 +773,6 @@ void FurnaceGUI::actualWaveList() { ImGui::SameLine(); PlotNoLerp(fmt::sprintf("##_WAVEP%d",i).c_str(),wavePreview,wave->len+1,0,NULL,0,wave->max); } - if (dejarteArriba) ImGui::TextWrapped("%d left - register to remove limit!",10-e->song.waveLen); } void FurnaceGUI::actualSampleList() { @@ -825,5 +822,4 @@ void FurnaceGUI::actualSampleList() { } if (wantScrollList && curSample==i) ImGui::SetScrollHereY(); } - if (dejarteArriba) ImGui::TextWrapped("%d left - register to remove limit!",5-e->song.sampleLen); } diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 6e08bd01..4e6cdec5 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -40,10 +40,6 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_OPEN_BACKUP: - if (dejarteArriba) { - showError("UNREGISTERED - first register and then I'll let you restore backup."); - break; - } if (modified) { showWarning("Unsaved changes! Save changes before opening backup?",GUI_WARN_OPEN_BACKUP); } else { @@ -178,13 +174,7 @@ void FurnaceGUI::doAction(int what) { break; } case GUI_ACTION_PANIC: - if (dejarteArriba) { - for (int i=0; igetTotalChannelCount(); i++) { - e->noteOn(i,rand()%MAX(e->song.insLen,1),0x4a+(rand()%12)); - } - } else { - e->syncReset(); - } + e->syncReset(); break; case GUI_ACTION_CLEAR: showWarning("Are you sure you want to clear... (cannot be undone!)",GUI_WARN_CLEAR); @@ -587,10 +577,6 @@ void FurnaceGUI::doAction(int what) { break; case GUI_ACTION_INS_LIST_ADD: - if (dejarteArriba && e->song.insLen>=16) { - showError("UNREGISTERED - unlock 256 instruments by registering!"); - break; - } curIns=e->addInstrument(cursor.xCoarse); if (curIns==-1) { showError("too many instruments!"); @@ -613,10 +599,6 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_INS_LIST_DUPLICATE: - if (dejarteArriba && e->song.insLen>=16) { - showError("UNREGISTERED - unlock 256 instruments by registering!"); - break; - } if (curIns>=0 && curIns<(int)e->song.ins.size()) { int prevIns=curIns; curIns=e->addInstrument(cursor.xCoarse); @@ -632,34 +614,18 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_INS_LIST_OPEN: - if (dejarteArriba && e->song.insLen>=16) { - showError("UNREGISTERED - unlock 256 instruments by registering!"); - break; - } openFileDialog(GUI_FILE_INS_OPEN); break; case GUI_ACTION_INS_LIST_OPEN_REPLACE: openFileDialog(GUI_FILE_INS_OPEN_REPLACE); break; case GUI_ACTION_INS_LIST_SAVE: - if (dejarteArriba) { - showError("UNREGISTERED - register to save instruments."); - break; - } if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE); break; case GUI_ACTION_INS_LIST_SAVE_OLD: - if (dejarteArriba) { - showError("UNREGISTERED - register to save instruments."); - break; - } if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE_OLD); break; case GUI_ACTION_INS_LIST_SAVE_DMP: - if (dejarteArriba) { - showError("UNREGISTERED - register to save instruments."); - break; - } if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE_DMP); break; case GUI_ACTION_INS_LIST_MOVE_UP: @@ -701,10 +667,6 @@ void FurnaceGUI::doAction(int what) { break; case GUI_ACTION_WAVE_LIST_ADD: - if (dejarteArriba && e->song.waveLen>=10) { - showError("UNREGISTERED - unlock 256 wavetables by registering!"); - break; - } curWave=e->addWave(); if (curWave==-1) { showError("too many wavetables!"); @@ -715,10 +677,6 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_WAVE_LIST_DUPLICATE: - if (dejarteArriba && e->song.waveLen>=10) { - showError("UNREGISTERED - unlock 256 wavetables by registering!"); - break; - } if (curWave>=0 && curWave<(int)e->song.wave.size()) { int prevWave=curWave; curWave=e->addWave(); @@ -733,34 +691,18 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_WAVE_LIST_OPEN: - if (dejarteArriba && e->song.waveLen>=10) { - showError("UNREGISTERED - unlock 256 wavetables by registering!"); - break; - } openFileDialog(GUI_FILE_WAVE_OPEN); break; case GUI_ACTION_WAVE_LIST_OPEN_REPLACE: openFileDialog(GUI_FILE_WAVE_OPEN_REPLACE); break; case GUI_ACTION_WAVE_LIST_SAVE: - if (dejarteArriba) { - showError("UNREGISTERED - register to save wavetables."); - break; - } if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE); break; case GUI_ACTION_WAVE_LIST_SAVE_DMW: - if (dejarteArriba) { - showError("UNREGISTERED - register to save wavetables."); - break; - } if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE_DMW); break; case GUI_ACTION_WAVE_LIST_SAVE_RAW: - if (dejarteArriba) { - showError("UNREGISTERED - register to save wavetables."); - break; - } if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE_RAW); break; case GUI_ACTION_WAVE_LIST_MOVE_UP: @@ -798,10 +740,6 @@ void FurnaceGUI::doAction(int what) { break; case GUI_ACTION_SAMPLE_LIST_ADD: - if (dejarteArriba && e->song.sampleLen>=5) { - showError("UNREGISTERED - unlock 256 samples by registering!"); - break; - } curSample=e->addSample(); if (curSample==-1) { showError("too many samples!"); @@ -812,10 +750,6 @@ void FurnaceGUI::doAction(int what) { updateSampleTex=true; break; case GUI_ACTION_SAMPLE_LIST_DUPLICATE: - if (dejarteArriba && e->song.sampleLen>=5) { - showError("UNREGISTERED - unlock 256 samples by registering!"); - break; - } if (curSample>=0 && curSample<(int)e->song.sample.size()) { DivSample* prevSample=e->getSample(curSample); curSample=e->addSample(); @@ -848,30 +782,18 @@ void FurnaceGUI::doAction(int what) { } break; case GUI_ACTION_SAMPLE_LIST_OPEN: - if (dejarteArriba && e->song.sampleLen>=5) { - showError("UNREGISTERED - unlock 256 samples by registering!"); - break; - } openFileDialog(GUI_FILE_SAMPLE_OPEN); break; case GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE: openFileDialog(GUI_FILE_SAMPLE_OPEN_REPLACE); break; case GUI_ACTION_SAMPLE_LIST_OPEN_RAW: - if (dejarteArriba && e->song.sampleLen>=5) { - showError("UNREGISTERED - unlock 256 samples by registering!"); - break; - } openFileDialog(GUI_FILE_SAMPLE_OPEN_RAW); break; case GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE_RAW: openFileDialog(GUI_FILE_SAMPLE_OPEN_REPLACE_RAW); break; case GUI_ACTION_SAMPLE_LIST_SAVE: - if (dejarteArriba) { - showError("UNREGISTERED - register to save samples."); - break; - } if (curSample>=0 && curSample<(int)e->song.sample.size()) openFileDialog(GUI_FILE_SAMPLE_SAVE); break; case GUI_ACTION_SAMPLE_LIST_MOVE_UP: @@ -914,10 +836,6 @@ void FurnaceGUI::doAction(int what) { e->previewSample(curSample); break; case GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW: - if (dejarteArriba) { - showError("you can't stop the preview because Furnace is UNREGISTERED."); - break; - } e->stopSamplePreview(); break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index df41634f..7c23114a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -550,18 +550,18 @@ void FurnaceGUI::updateWindowTitle() { String title; switch (settings.titleBarInfo) { case 0: - title="Furnace Pro"; + title="Furnace"; break; case 1: if (e->song.name.empty()) { - title="Furnace Pro"; + title="Furnace"; } else { - title=fmt::sprintf("%s - Furnace Pro",e->song.name); + title=fmt::sprintf("%s - Furnace",e->song.name); } break; case 2: if (curFileName.empty()) { - title="Furnace Pro"; + title="Furnace"; } else { String shortName; size_t pos=curFileName.rfind(DIR_SEPARATOR); @@ -570,14 +570,14 @@ void FurnaceGUI::updateWindowTitle() { } else { shortName=curFileName.substr(pos+1); } - title=fmt::sprintf("%s - Furnace Pro",shortName); + title=fmt::sprintf("%s - Furnace",shortName); } break; case 3: if (curFileName.empty()) { - title="Furnace Pro"; + title="Furnace"; } else { - title=fmt::sprintf("%s - Furnace Pro",curFileName); + title=fmt::sprintf("%s - Furnace",curFileName); } break; } @@ -588,8 +588,6 @@ void FurnaceGUI::updateWindowTitle() { } } - if (dejarteArriba) title+=" (UNREGISTERED)"; - if (sdlWin!=NULL) SDL_SetWindowTitle(sdlWin,title.c_str()); } @@ -1082,10 +1080,6 @@ void FurnaceGUI::stop() { memset(chanOscVol,0,DIV_MAX_CHANS*sizeof(float)); memset(chanOscPitch,0,DIV_MAX_CHANS*sizeof(float)); memset(chanOscBright,0,DIV_MAX_CHANS*sizeof(float)); - - if (dejarteArriba) if (!(rand()%5)) { - showError("Thanks for using Furnace Pro!\nremember that this version is UNREGISTERED. gotta pay, huh?"); - } } void FurnaceGUI::previewNote(int refChan, int note, bool autoNote) { @@ -1118,12 +1112,6 @@ void FurnaceGUI::noteInput(int num, int key, int vol) { prepareUndo(GUI_UNDO_PATTERN_EDIT); - if (dejarteArriba) { - if (!(rand()%10)) { - num+=(rand()%5)-2; - } - } - if (key==GUI_NOTE_OFF) { // note off pat->data[cursor.y][0]=100; pat->data[cursor.y][1]=0; @@ -3996,14 +3984,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("effect list",BIND_FOR(GUI_ACTION_WINDOW_EFFECT_LIST),effectListOpen)) effectListOpen=!effectListOpen; if (ImGui::MenuItem("debug menu",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) debugOpen=!debugOpen; if (ImGui::MenuItem("inspector",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) inspectorOpen=!inspectorOpen; - if (ImGui::MenuItem("panic",BIND_FOR(GUI_ACTION_PANIC))) { - doAction(GUI_ACTION_PANIC); - } - if (dejarteArriba) { - ImGui::Separator(); - if (ImGui::MenuItem("register...",NULL)) displayRegister=true; - ImGui::Separator(); - } + if (ImGui::MenuItem("panic",BIND_FOR(GUI_ACTION_PANIC))) e->syncReset(); if (ImGui::MenuItem("about...",BIND_FOR(GUI_ACTION_WINDOW_ABOUT))) { aboutOpen=true; aboutScroll=0; @@ -4080,16 +4061,6 @@ bool FurnaceGUI::loop() { break; } } - - if (dejarteArriba) { - if (info.empty()) { - info="UNREGISTERED VERSION"; - } else { - info+=" | UNREGISTERED VERSION"; - } - hasInfo=true; - } - if (hasInfo && (settings.statusDisplay==0 || settings.statusDisplay==2)) { ImGui::Text("| %s",info.c_str()); } else if (settings.statusDisplay==1 || settings.statusDisplay==2) { @@ -4873,12 +4844,6 @@ bool FurnaceGUI::loop() { ImGui::OpenPopup("New Song"); } - if (displayRegister) { - displayRegister=false; - regStep=0; - ImGui::OpenPopup("Register"); - } - if (nextWindow==GUI_WINDOW_ABOUT) { aboutOpen=true; nextWindow=GUI_WINDOW_NOTHING; @@ -4898,326 +4863,6 @@ bool FurnaceGUI::loop() { ImGui::EndPopup(); } - ImVec2 regMinSize=mobileUI?ImVec2(canvasW-(portrait?0:(60.0*dpiScale)),canvasH-60.0*dpiScale):ImVec2(400.0f*dpiScale,200.0f*dpiScale); - ImVec2 regMaxSize=ImVec2(canvasW-((mobileUI && !portrait)?(60.0*dpiScale):0),canvasH-(mobileUI?(60.0*dpiScale):0)); - ImGui::SetNextWindowSizeConstraints(regMinSize,regMaxSize); - if (ImGui::BeginPopupModal("Register",NULL,ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoScrollWithMouse|ImGuiWindowFlags_NoScrollbar)) { - ImGui::SetWindowPos(ImVec2(((canvasW)-ImGui::GetWindowSize().x)*0.5,((canvasH)-ImGui::GetWindowSize().y)*0.5)); - if (ImGui::GetWindowSize().x=301) { - ImGui::Text("ERROR! Cannot pay with card! Try again later."); - } else if (cannotPressCount>=300) { - if (ImGui::Button("Help! It's not working! :<")) { - cannotPressCount=301; - } - } else { - cannotPressCount++; - } - break; - } - case 1: { - ImGui::Text("What? No, you're bullshitting me."); - break; - } - case 2: { - ImGui::Text("Send $%.2f worth of Bitcoin to the following address:",(orderFurnacePro?1.99:0)+(orderBonusPack?69418.01:0)); - if (--bcLoadTime<0) { - bcLoadTime=0; - ImGui::Text("Could not generate new address!"); - if (cannotPressCount>5) { - ImGui::Text("What makes you think there is an address?"); - if (ImGui::Button("I don't know")) { - bcLoadTime=2; - cannotPressCount++; - } - } else { - if (ImGui::Button("Try again")) { - bcLoadTime=30; - cannotPressCount++; - } - } - } else { - ImGui::Text("--- GENERATING ---"); - ImVec2 cPos=ImGui::GetCursorPos(); - for (int i=0; i<5; i++) { - ImGui::SetCursorPos( - ImVec2( - cPos.x+(1.0+cos((double)bcLoadTime/13.0+i))*60*dpiScale, - cPos.y+(1.0+sin((double)bcLoadTime/13.0+i))*60*dpiScale - ) - ); - ImGui::Button(" "); - } - } - break; - } - case 3: - ImGui::Text("Send $%.2f to the Furnace headquarters once you click Pay.",(orderFurnacePro?1.99:0)+(orderBonusPack?69418.01:0)); - break; - case 4: - ImGui::Text("The easiest way to pay - ever."); - break; - case 5: - break; - } - - if (ImGui::Button(ICON_FA_CHEVRON_LEFT "Back")) regStep=0; - ImGui::SameLine(); - ImGui::BeginDisabled(payMethod<0); - if (ImGui::Button("Pay" ICON_FA_CHEVRON_RIGHT)) { - bcLoadTime=0; - regStep=2; - cannotPressCount=120; - } - ImGui::EndDisabled(); - break; - case 2: case 3: case 4: case 5: case 6: case 7: { - if (regStep==2) { - ImGui::Text("Connecting to Furnace Headquarters..."); - } else if (regStep==3) { - ImGui::Text("Saying hi..."); - } else if (regStep==4) { - ImGui::Text("Sending order request..."); - } else if (regStep==5) { - ImGui::Text("Processing payment information..."); - } else if (regStep==6) { - ImGui::Text("Preparing world domination plans..."); - } else if (regStep==7) { - ImGui::Text("Validating order..."); - } - - if (--cannotPressCount<0) { - cannotPressCount=30+(rand()%120); - if (!(rand()%5)) { - regStep=8; - } else { - regStep++; - } - } - - bcLoadTime++; - ImVec2 cPos=ImGui::GetCursorPos(); - for (int i=0; i<8; i++) { - ImGui::SetCursorPos( - ImVec2( - cPos.x+(1.0+cos((double)bcLoadTime/23.0+i))*120*dpiScale, - cPos.y+(1.0+sin((double)bcLoadTime/23.0+i))*120*dpiScale - ) - ); - ImGui::Button(" "); - } - - if (ImGui::Button("Cancel")) ImGui::CloseCurrentPopup(); - break; - } - case 8: - ImGui::Text("Error! Try again?"); - - if (ImGui::Button("Sure, why not.")) regStep=2; - if (ImGui::Button("Wait! I have a key!")) { - regStep=9; - cannotPressCount=0; - } - if (ImGui::Button("Get away from me you-")) ImGui::CloseCurrentPopup(); - break; - case 9: - ImGui::Text("Enter your registration key:"); - ImGui::InputText("##RegKey",&mmlStringSNES); - - if (ImGui::Button("Cancel")) ImGui::CloseCurrentPopup(); - ImGui::SameLine(); - if (ImGui::Button("Done")) { - if (mmlStringSNES=="Shut the fuck up Im_A_Payment_Form.") { - mmlStringSNES=""; - regStep=10; - settings.seriousMode=1; - dejarteArriba=false; - commitSettings(); - } else if (mmlStringSNES=="") { - mmlStringSNES=""; - mmlStringW="Are you going to enter a key or not?"; - } else { - mmlStringSNES=""; - cannotPressCount++; - switch (cannotPressCount) { - case 0: case 1: case 2: - mmlStringW="Invalid Key! Try again."; - break; - case 3: - mmlStringW="Are you sure there is a key?"; - break; - case 4: - mmlStringW="I just want to tell you how I'm feeling..."; - break; - case 5: - mmlStringW="Gotta make you understand..."; - break; - default: - mmlStringW="Never-"; - break; - } - } - } - ImGui::Text("%s",mmlStringW.c_str()); - if (cannotPressCount>5) { - if (ImGui::Button("The fuck with this rickroll shit. Stop it already.")) { - settings.seriousMode=1; - dejarteArriba=false; - commitSettings(); - abort(); - } - } - break; - case 10: - ImGui::Text("Thanks for registering Furnace Pro!"); - if (ImGui::Button("Yeah screw you")) ImGui::CloseCurrentPopup(); - break; - } - - ImGui::EndPopup(); - } - //drawTutorial(); ImVec2 newSongMinSize=mobileUI?ImVec2(canvasW-(portrait?0:(60.0*dpiScale)),canvasH-60.0*dpiScale):ImVec2(400.0f*dpiScale,200.0f*dpiScale); @@ -5237,13 +4882,6 @@ bool FurnaceGUI::loop() { if (ImGui::Button("OK")) { ImGui::CloseCurrentPopup(); } - if (dejarteArriba && errorString.find("UNREGISTERED")!=String::npos) { - ImGui::SameLine(); - if (ImGui::Button("Register Furnace Pro")) { - displayRegister=true; - ImGui::CloseCurrentPopup(); - } - } ImGui::EndPopup(); } @@ -6430,7 +6068,6 @@ FurnaceGUI::FurnaceGUI(): edit(false), modified(false), displayError(false), - displayRegister(false), displayExporting(false), vgmExportLoop(true), zsmExportLoop(true), @@ -6493,18 +6130,11 @@ FurnaceGUI::FurnaceGUI(): scrY(SDL_WINDOWPOS_CENTERED), scrConfX(SDL_WINDOWPOS_CENTERED), scrConfY(SDL_WINDOWPOS_CENTERED), - regStep(0), - payMethod(-1), - cannotPressCount(0), - bcLoadTime(300), scrMax(false), sysManagedScale(false), - orderFurnacePro(true), - orderBonusPack(false), dpiScale(1), aboutScroll(0), aboutSin(0), - nextNag(20.0), aboutHue(0.0f), backupTimer(15.0), learning(-1), diff --git a/src/gui/gui.h b/src/gui/gui.h index 7d7cf936..7dddb53e 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1176,7 +1176,7 @@ class FurnaceGUI { std::vector makeInsTypeList; std::vector availRenderDrivers; - bool quit, warnQuit, willCommit, edit, modified, displayError, displayRegister, displayExporting, vgmExportLoop, zsmExportLoop, vgmExportPatternHints; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, zsmExportLoop, vgmExportPatternHints; bool vgmExportDirectStream, displayInsTypeList; bool portrait, injectBackUp, mobileMenuOpen; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; @@ -1214,14 +1214,12 @@ class FurnaceGUI { FurnaceGUIFileDialog* fileDialog; int scrW, scrH, scrConfW, scrConfH, canvasW, canvasH; - int scrX, scrY, scrConfX, scrConfY, regStep, payMethod, cannotPressCount, bcLoadTime; + int scrX, scrY, scrConfX, scrConfY; bool scrMax, sysManagedScale; - bool orderFurnacePro, orderBonusPack; - double dpiScale; - double aboutScroll, aboutSin, nextNag; + double aboutScroll, aboutSin; float aboutHue; std::atomic backupTimer; @@ -1381,7 +1379,6 @@ class FurnaceGUI { int alwaysPlayIntro; int iCannotWait; int orderButtonPos; - int seriousMode; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1525,7 +1522,6 @@ class FurnaceGUI { alwaysPlayIntro(0), iCannotWait(0), orderButtonPos(2), - seriousMode(0), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 2da230dc..33de4d4d 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -741,11 +741,7 @@ void FurnaceGUI::drawPattern() { if (ImGui::IsItemHovered()) { if (CHECK_LONG_HOLD) { NOTIFY_LONG_HOLD; - if (dejarteArriba) { - showError("UNREGISTERED - register NOW to unlock solo!"); - } else { - e->toggleSolo(i); - } + e->toggleSolo(i); soloChan=i; } if (ImGui::IsMouseReleased(ImGuiMouseButton_Left) && !ImGui::WasInertialScroll()) { @@ -759,11 +755,7 @@ void FurnaceGUI::drawPattern() { } else { if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { if (settings.soloAction!=1 && soloTimeout>0 && soloChan==i) { - if (dejarteArriba) { - showError("UNREGISTERED - register NOW to unlock solo!"); - } else { - e->toggleSolo(i); - } + e->toggleSolo(i); soloTimeout=0; } else { e->toggleMute(i); @@ -776,11 +768,7 @@ void FurnaceGUI::drawPattern() { ImGui::PopStyleColor(4); if (settings.soloAction!=2 && !mobileUI) if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { inhibitMenu=true; - if (dejarteArriba) { - showError("UNREGISTERED - register NOW to unlock solo!"); - } else { - e->toggleSolo(i); - } + e->toggleSolo(i); } if (settings.channelStyle==3) { diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 0a58ea2d..207c8838 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2639,7 +2639,6 @@ void FurnaceGUI::syncSettings() { settings.cursorFollowsOrder=e->getConfInt("cursorFollowsOrder",1); settings.iCannotWait=e->getConfInt("iCannotWait",0); settings.orderButtonPos=e->getConfInt("orderButtonPos",2); - settings.seriousMode=e->getConfInt("seriousMode",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2758,9 +2757,6 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.cursorFollowsOrder,0,1); clampSetting(settings.iCannotWait,0,1); clampSetting(settings.orderButtonPos,0,2); - clampSetting(settings.seriousMode,0,1); - - if (settings.seriousMode) dejarteArriba=false; if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; @@ -2974,9 +2970,6 @@ void FurnaceGUI::commitSettings() { e->setConf("cursorFollowsOrder",settings.cursorFollowsOrder); e->setConf("iCannotWait",settings.iCannotWait); e->setConf("orderButtonPos",settings.orderButtonPos); - e->setConf("seriousMode",settings.seriousMode); - - if (settings.seriousMode) dejarteArriba=false; // colors for (int i=0; isong.tuning; - float avail=ImGui::GetContentRegionAvail().x; - ImGui::SetNextItemWidth(avail); - if (ImGui::InputFloat("##Tuning",&tune,1.0f,3.0f,"%g")) { MARK_MODIFIED - if (tune<220.0f) tune=220.0f; - if (tune>880.0f) tune=880.0f; - e->song.tuning=tune; - } + float tune=e->song.tuning; + float avail=ImGui::GetContentRegionAvail().x; + ImGui::SetNextItemWidth(avail); + if (ImGui::InputFloat("##Tuning",&tune,1.0f,3.0f,"%g")) { MARK_MODIFIED + if (tune<220.0f) tune=220.0f; + if (tune>880.0f) tune=880.0f; + e->song.tuning=tune; } ImGui::EndTable(); } diff --git a/src/gui/speed.cpp b/src/gui/speed.cpp index 15a7fcf7..9cb5c72d 100644 --- a/src/gui/speed.cpp +++ b/src/gui/speed.cpp @@ -21,7 +21,6 @@ #include "imgui.h" #include "misc/cpp/imgui_stdlib.h" #include "intConst.h" -#include "../ta-log.h" void FurnaceGUI::drawSpeed(bool asChild) { if (nextWindow==GUI_WINDOW_SPEED) { @@ -73,148 +72,144 @@ void FurnaceGUI::drawSpeed(bool asChild) { } } - if (dejarteArriba) { - ImGui::TextWrapped("UNREGISTERED\nRegister to unlock all Speed settings."); - } else { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (keepGrooveAlive || e->curSubSong->speeds.len>2) { - if (ImGui::SmallButton("Groove")) { - e->lockEngine([this]() { - e->curSubSong->speeds.len=1; - }); - if (e->isPlaying()) play(); - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("click for one speed"); - } - } else if (e->curSubSong->speeds.len>1) { - if (ImGui::SmallButton("Speeds")) { - e->lockEngine([this]() { - e->curSubSong->speeds.len=4; - e->curSubSong->speeds.val[2]=e->curSubSong->speeds.val[0]; - e->curSubSong->speeds.val[3]=e->curSubSong->speeds.val[1]; - }); - if (e->isPlaying()) play(); - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("click for groove pattern"); - } - } else { - if (ImGui::SmallButton("Speed")) { - e->lockEngine([this]() { - e->curSubSong->speeds.len=2; - e->curSubSong->speeds.val[1]=e->curSubSong->speeds.val[0]; - }); - if (e->isPlaying()) play(); - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("click for two (alternating) speeds"); - } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (keepGrooveAlive || e->curSubSong->speeds.len>2) { + if (ImGui::SmallButton("Groove")) { + e->lockEngine([this]() { + e->curSubSong->speeds.len=1; + }); + if (e->isPlaying()) play(); } - ImGui::TableNextColumn(); - if (keepGrooveAlive || e->curSubSong->speeds.len>2) { - int intVersion[256]; - unsigned char intVersionLen=e->curSubSong->speeds.len; - unsigned char ignoredLoop=0; - unsigned char ignoredRel=0; - memset(intVersion,0,sizeof(int)); - for (int i=0; i<16; i++) { - intVersion[i]=e->curSubSong->speeds.val[i]; + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("click for one speed"); + } + } else if (e->curSubSong->speeds.len>1) { + if (ImGui::SmallButton("Speeds")) { + e->lockEngine([this]() { + e->curSubSong->speeds.len=4; + e->curSubSong->speeds.val[2]=e->curSubSong->speeds.val[0]; + e->curSubSong->speeds.val[3]=e->curSubSong->speeds.val[1]; + }); + if (e->isPlaying()) play(); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("click for groove pattern"); + } + } else { + if (ImGui::SmallButton("Speed")) { + e->lockEngine([this]() { + e->curSubSong->speeds.len=2; + e->curSubSong->speeds.val[1]=e->curSubSong->speeds.val[0]; + }); + if (e->isPlaying()) play(); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("click for two (alternating) speeds"); + } + } + ImGui::TableNextColumn(); + if (keepGrooveAlive || e->curSubSong->speeds.len>2) { + int intVersion[256]; + unsigned char intVersionLen=e->curSubSong->speeds.len; + unsigned char ignoredLoop=0; + unsigned char ignoredRel=0; + memset(intVersion,0,sizeof(int)); + for (int i=0; i<16; i++) { + intVersion[i]=e->curSubSong->speeds.val[i]; + } + if (intVersionLen>16) intVersionLen=16; + + keepGrooveAlive=false; + + ImGui::SetNextItemWidth(avail); + if (ImGui::InputText("##SpeedG",&grooveString)) { + decodeMMLStr(grooveString,intVersion,intVersionLen,ignoredLoop,1,255,ignoredRel); + if (intVersionLen<1) { + intVersionLen=1; + intVersion[0]=6; } if (intVersionLen>16) intVersionLen=16; - - keepGrooveAlive=false; - - ImGui::SetNextItemWidth(avail); - if (ImGui::InputText("##SpeedG",&grooveString)) { - decodeMMLStr(grooveString,intVersion,intVersionLen,ignoredLoop,1,255,ignoredRel); - if (intVersionLen<1) { - intVersionLen=1; - intVersion[0]=6; + e->lockEngine([this,intVersion,intVersionLen]() { + e->curSubSong->speeds.len=intVersionLen; + for (int i=0; i<16; i++) { + e->curSubSong->speeds.val[i]=intVersion[i]; } - if (intVersionLen>16) intVersionLen=16; - e->lockEngine([this,intVersion,intVersionLen]() { - e->curSubSong->speeds.len=intVersionLen; - for (int i=0; i<16; i++) { - e->curSubSong->speeds.val[i]=intVersion[i]; - } - }); - if (e->isPlaying()) play(); - MARK_MODIFIED; - } - if (!ImGui::IsItemActive()) { - encodeMMLStr(grooveString,intVersion,intVersionLen,-1,-1,false); - } else { - keepGrooveAlive=true; - } + }); + if (e->isPlaying()) play(); + MARK_MODIFIED; + } + if (!ImGui::IsItemActive()) { + encodeMMLStr(grooveString,intVersion,intVersionLen,-1,-1,false); } else { + keepGrooveAlive=true; + } + } else { + ImGui::SetNextItemWidth(halfAvail); + if (ImGui::InputScalar("##Speed1",ImGuiDataType_U8,&e->curSubSong->speeds.val[0],&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->speeds.val[0]<1) e->curSubSong->speeds.val[0]=1; + if (e->isPlaying()) play(); + } + if (e->curSubSong->speeds.len>1) { + ImGui::SameLine(); ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##Speed1",ImGuiDataType_U8,&e->curSubSong->speeds.val[0],&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->speeds.val[0]<1) e->curSubSong->speeds.val[0]=1; + if (ImGui::InputScalar("##Speed2",ImGuiDataType_U8,&e->curSubSong->speeds.val[1],&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->speeds.val[1]<1) e->curSubSong->speeds.val[1]=1; if (e->isPlaying()) play(); } - if (e->curSubSong->speeds.len>1) { - ImGui::SameLine(); - ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##Speed2",ImGuiDataType_U8,&e->curSubSong->speeds.val[1],&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->speeds.val[1]<1) e->curSubSong->speeds.val[1]=1; - if (e->isPlaying()) play(); - } - } - } - - if (!basicMode) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Virtual Tempo"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##VTempoN",ImGuiDataType_S16,&e->curSubSong->virtualTempoN,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->virtualTempoN<1) e->curSubSong->virtualTempoN=1; - if (e->curSubSong->virtualTempoN>255) e->curSubSong->virtualTempoN=255; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Numerator"); - } - ImGui::SameLine(); - ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##VTempoD",ImGuiDataType_S16,&e->curSubSong->virtualTempoD,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->virtualTempoD<1) e->curSubSong->virtualTempoD=1; - if (e->curSubSong->virtualTempoD>255) e->curSubSong->virtualTempoD=255; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Denominator (set to base tempo)"); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Divider"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(halfAvail); - unsigned char realTB=e->curSubSong->timeBase+1; - if (ImGui::InputScalar("##TimeBase",ImGuiDataType_U8,&realTB,&_ONE,&_THREE)) { MARK_MODIFIED - if (realTB<1) realTB=1; - if (realTB>16) realTB=16; - e->curSubSong->timeBase=realTB-1; - } - ImGui::SameLine(); - ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speeds,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD)); } + } + if (!basicMode) { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Text("Highlight"); + ImGui::Text("Virtual Tempo"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##Highlight1",ImGuiDataType_U8,&e->curSubSong->hilightA,&_ONE,&_THREE)) { - MARK_MODIFIED; + if (ImGui::InputScalar("##VTempoN",ImGuiDataType_S16,&e->curSubSong->virtualTempoN,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->virtualTempoN<1) e->curSubSong->virtualTempoN=1; + if (e->curSubSong->virtualTempoN>255) e->curSubSong->virtualTempoN=255; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Numerator"); } ImGui::SameLine(); ImGui::SetNextItemWidth(halfAvail); - if (ImGui::InputScalar("##Highlight2",ImGuiDataType_U8,&e->curSubSong->hilightB,&_ONE,&_THREE)) { - MARK_MODIFIED; + if (ImGui::InputScalar("##VTempoD",ImGuiDataType_S16,&e->curSubSong->virtualTempoD,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->virtualTempoD<1) e->curSubSong->virtualTempoD=1; + if (e->curSubSong->virtualTempoD>255) e->curSubSong->virtualTempoD=255; } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Denominator (set to base tempo)"); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Divider"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(halfAvail); + unsigned char realTB=e->curSubSong->timeBase+1; + if (ImGui::InputScalar("##TimeBase",ImGuiDataType_U8,&realTB,&_ONE,&_THREE)) { MARK_MODIFIED + if (realTB<1) realTB=1; + if (realTB>16) realTB=16; + e->curSubSong->timeBase=realTB-1; + } + ImGui::SameLine(); + ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speeds,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD)); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Highlight"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(halfAvail); + if (ImGui::InputScalar("##Highlight1",ImGuiDataType_U8,&e->curSubSong->hilightA,&_ONE,&_THREE)) { + MARK_MODIFIED; + } + ImGui::SameLine(); + ImGui::SetNextItemWidth(halfAvail); + if (ImGui::InputScalar("##Highlight2",ImGuiDataType_U8,&e->curSubSong->hilightB,&_ONE,&_THREE)) { + MARK_MODIFIED; } ImGui::EndTable(); } diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index aa8ed11f..c0056b72 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -3,7 +3,6 @@ #include "IconsFontAwesome4.h" #include "misc/cpp/imgui_stdlib.h" #include "intConst.h" -#include "../ta-log.h" void FurnaceGUI::drawSubSongs(bool asChild) { if (nextWindow==GUI_WINDOW_SUBSONGS) { @@ -72,25 +71,21 @@ void FurnaceGUI::drawSubSongs(bool asChild) { } ImGui::SameLine(); if (ImGui::Button(ICON_FA_PLUS "##SubSongAdd")) { - if (dejarteArriba) { - showError("UNREGISTERED! register to add subsongs."); + if (!e->addSubSong()) { + showError("too many subsongs!"); } else { - if (!e->addSubSong()) { - showError("too many subsongs!"); - } else { - e->changeSongP(e->song.subsong.size()-1); - updateScroll(0); - oldOrder=0; - oldOrder1=0; - oldRow=0; - cursor.xCoarse=0; - cursor.xFine=0; - cursor.y=0; - selStart=cursor; - selEnd=cursor; - curOrder=0; - MARK_MODIFIED; - } + e->changeSongP(e->song.subsong.size()-1); + updateScroll(0); + oldOrder=0; + oldOrder1=0; + oldRow=0; + cursor.xCoarse=0; + cursor.xFine=0; + cursor.y=0; + selStart=cursor; + selEnd=cursor; + curOrder=0; + MARK_MODIFIED; } } if (ImGui::IsItemHovered()) { @@ -98,14 +93,10 @@ void FurnaceGUI::drawSubSongs(bool asChild) { } ImGui::SameLine(); if (ImGui::Button(ICON_FA_MINUS "##SubSongDel")) { - if (dejarteArriba) { - showError("UNREGISTERED! register to add subsongs."); + if (e->song.subsong.size()<=1) { + showError("this is the only subsong!"); } else { - if (e->song.subsong.size()<=1) { - showError("this is the only subsong!"); - } else { - showWarning("are you sure you want to remove this subsong?",GUI_WARN_SUBSONG_DEL); - } + showWarning("are you sure you want to remove this subsong?",GUI_WARN_SUBSONG_DEL); } } if (ImGui::IsItemHovered()) { diff --git a/src/log.cpp b/src/log.cpp index 11c27cf4..5f24269d 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -27,8 +27,6 @@ int logLevel=LOGLEVEL_TRACE; int logLevel=LOGLEVEL_INFO; #endif -bool dejarteArriba=false; - FILE* logFile; char* logFileBuf; char* logFileWriteBuf; @@ -143,12 +141,6 @@ void initLog() { // initialize log to file thread logFileAvail=false; - - time_t curTime=time(NULL); - struct tm curDay; - if (localtime_r(&curTime,&curDay)!=NULL) { - dejarteArriba=(curDay.tm_mon==3 && (curDay.tm_mday==1 || curDay.tm_mday==2)); - } } void _logFileThread() { diff --git a/src/ta-log.h b/src/ta-log.h index 4443519d..d36f5da7 100644 --- a/src/ta-log.h +++ b/src/ta-log.h @@ -39,7 +39,6 @@ #define TA_LOGFILE_BUF_SIZE 65536 extern int logLevel; -extern bool dejarteArriba; extern std::atomic logPosition;