diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 74bd1cb8..753ef601 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -349,11 +349,15 @@ void FurnaceGUI::drawSettings() { ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::InputText("##InitSysName",&settings.initialSysName); + int sysCount=0; + int doRemove=-1; for (size_t i=0; settings.initialSys.getInt(fmt::sprintf("id%d",i),0); i++) { DivSystem sysID=e->systemFromFileFur(settings.initialSys.getInt(fmt::sprintf("id%d",i),0)); signed char sysVol=settings.initialSys.getInt(fmt::sprintf("vol%d",i),0); signed char sysPan=settings.initialSys.getInt(fmt::sprintf("pan%d",i),0); + sysCount=i+1; + //bool doRemove=false; bool doInvert=sysVol&128; signed char vol=sysVol&127; @@ -379,7 +383,7 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); //ImGui::BeginDisabled(settings.initialSys.size()<=4); if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) { - //doRemove=true; + doRemove=i; } //ImGui::EndDisabled(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-(50.0f*dpiScale)); @@ -404,17 +408,31 @@ void FurnaceGUI::drawSettings() { } ImGui::PopID(); - /*if (doRemove && settings.initialSys.size()>=8) { - settings.initialSys.erase(settings.initialSys.begin()+i,settings.initialSys.begin()+i+4); - i-=4; - }*/ } - if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { - /*settings.initialSys.push_back(DIV_SYSTEM_YM2612); - settings.initialSys.push_back(64); - settings.initialSys.push_back(0); - settings.initialSys.push_back(0);*/ + if (doRemove>=0 && sysCount>1) { + for (int i=doRemove; isystemToFileFur(DIV_SYSTEM_YM2612)); + settings.initialSys.set(fmt::sprintf("vol%d",sysCount),64); + settings.initialSys.set(fmt::sprintf("pan%d",sysCount),0); + settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); } ImGui::Separator();