GUI: fix add/remove buttons for initial system

This commit is contained in:
tildearrow 2022-11-12 02:27:05 -05:00
parent 2507d2295b
commit 4c90adda2b
1 changed files with 28 additions and 10 deletions

View File

@ -349,11 +349,15 @@ void FurnaceGUI::drawSettings() {
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
ImGui::InputText("##InitSysName",&settings.initialSysName); 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++) { 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)); 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 sysVol=settings.initialSys.getInt(fmt::sprintf("vol%d",i),0);
signed char sysPan=settings.initialSys.getInt(fmt::sprintf("pan%d",i),0); signed char sysPan=settings.initialSys.getInt(fmt::sprintf("pan%d",i),0);
sysCount=i+1;
//bool doRemove=false; //bool doRemove=false;
bool doInvert=sysVol&128; bool doInvert=sysVol&128;
signed char vol=sysVol&127; signed char vol=sysVol&127;
@ -379,7 +383,7 @@ void FurnaceGUI::drawSettings() {
ImGui::SameLine(); ImGui::SameLine();
//ImGui::BeginDisabled(settings.initialSys.size()<=4); //ImGui::BeginDisabled(settings.initialSys.size()<=4);
if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) { if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) {
//doRemove=true; doRemove=i;
} }
//ImGui::EndDisabled(); //ImGui::EndDisabled();
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-(50.0f*dpiScale)); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-(50.0f*dpiScale));
@ -404,17 +408,31 @@ void FurnaceGUI::drawSettings() {
} }
ImGui::PopID(); 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")) { if (doRemove>=0 && sysCount>1) {
/*settings.initialSys.push_back(DIV_SYSTEM_YM2612); for (int i=doRemove; i<sysCount-1; i++) {
settings.initialSys.push_back(64); int sysID=settings.initialSys.getInt(fmt::sprintf("id%d",i+1),0);
settings.initialSys.push_back(0); int sysVol=settings.initialSys.getInt(fmt::sprintf("vol%d",i+1),0);
settings.initialSys.push_back(0);*/ int sysPan=settings.initialSys.getInt(fmt::sprintf("pan%d",i+1),0);
String sysFlags=settings.initialSys.getString(fmt::sprintf("flags%d",i+1),"");
settings.initialSys.set(fmt::sprintf("id%d",i),sysID);
settings.initialSys.set(fmt::sprintf("vol%d",i),sysVol);
settings.initialSys.set(fmt::sprintf("pan%d",i),sysPan);
settings.initialSys.set(fmt::sprintf("flags%d",i),sysFlags);
}
settings.initialSys.remove(fmt::sprintf("id%d",sysCount-1));
settings.initialSys.remove(fmt::sprintf("vol%d",sysCount-1));
settings.initialSys.remove(fmt::sprintf("pan%d",sysCount-1));
settings.initialSys.remove(fmt::sprintf("flags%d",sysCount-1));
}
if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) {
settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(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(); ImGui::Separator();