diff --git a/MissionEditor/Building.cpp b/MissionEditor/Building.cpp index 63e72a2..1a55d95 100644 --- a/MissionEditor/Building.cpp +++ b/MissionEditor/Building.cpp @@ -95,14 +95,7 @@ END_MESSAGE_MAP() CString GetName(CString id) { - CIniFile& ini=Map->GetIniFile(); - if(ini.sections.find(id)!=ini.sections.end()) - { - if(ini.sections[id].values.find("Name")!=ini.sections[id].values.end()) - return ini.sections[id].values["Name"]; - - } - return rules.sections[id].values["Name"]; + return rules.GetString(id, "Name"); } void CBuilding::OnOK() @@ -152,93 +145,28 @@ BOOL CBuilding::OnInitDialog() UpdateData(FALSE); int upgradecount=0; - if(strcmp(m_type,"GACTWR")==NULL) - upgradecount=1; - - - if(ini.sections.find(m_type)!=ini.sections.end()) - { - if(ini.sections[m_type].values.find("Upgrades")!=ini.sections[m_type].values.end()) - { - // ok we have our upgrade - upgradecount=atoi(ini.sections[m_type].values["Upgrades"]); - } - else - { - if(rules.sections[m_type].values.find("Upgrades")!=rules.sections[m_type].values.end()) - upgradecount=atoi(rules.sections[m_type].values["Upgrades"]); - } - } - else - { - if(rules.sections[m_type].values.find("Upgrades")!=rules.sections[m_type].values.end()) - upgradecount=atoi(rules.sections[m_type].values["Upgrades"]); + if (strcmp(m_type, "GACTWR") == NULL) { + upgradecount = 1; } + upgradecount = ini.GetInteger(m_type, "Upgrades"); GetDlgItem(IDC_P5)->SendMessage(CB_SETCURSEL, atoi(m_spotlight), 0); - if(upgradecount>0) - { - for(i=0;iAddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P7))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P8))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - } + if (upgradecount > 0) { + auto updatePowerupItems = [=](const CIniFile& ini) { + for (auto const& [seq, unitname] : ini["BuildingTypes"]) { + auto const& targetBldID = ini.GetString(unitname, "PowersUpBuilding"); + if (targetBldID == m_type) { + auto const desc = unitname + " (" + GetName(unitname) + ")"; + ((CComboBox*)GetDlgItem(IDC_P6))->AddString(desc); + ((CComboBox*)GetDlgItem(IDC_P7))->AddString(desc); + ((CComboBox*)GetDlgItem(IDC_P8))->AddString(desc); } } - else - { - // ini did not specify thing specified - if(rules.sections[unitname].values.find("PowersUpBuilding")!=rules.sections[unitname].values.end()) - { - // rules file specified new PowersUpBuilding - if(_stricmp(rules.sections[unitname].values["PowersUpBuilding"], m_type)==NULL) - { - ((CComboBox*)GetDlgItem(IDC_P6))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P7))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P8))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - } - } - } - } - if(ini.sections.find("BuildingTypes")!=ini.sections.end()) - { - for(i=0;iAddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P7))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - ((CComboBox*)GetDlgItem(IDC_P8))->AddString(((CString)unitname+" ("+GetName(unitname)+")")); - } - } - } - - } - } + }; + updatePowerupItems(rules); + updatePowerupItems(ini); } GetDlgItem(IDC_P8)->EnableWindow(TRUE);