diff --git a/MissionEditor/TriggerEventsDlg.cpp b/MissionEditor/TriggerEventsDlg.cpp index 5ef8521..580548d 100644 --- a/MissionEditor/TriggerEventsDlg.cpp +++ b/MissionEditor/TriggerEventsDlg.cpp @@ -76,7 +76,7 @@ END_MESSAGE_MAP() // Behandlungsroutinen für Nachrichten CTriggerEventsDlg // MW 07/23/01: Added this because startpos=1+curev*3 isn´t anymore valid for calculating the next event -int GetEventParamStart(CString& EventData, int param) +int GetEventParamStart(const CString& EventData, int param) { int count=atoi(GetParam(EventData, 0)); if(param>=count) return -1; @@ -102,18 +102,20 @@ void CTriggerEventsDlg::OnNewevent() { CIniFile& ini=Map->GetIniFile(); - if(m_currentTrigger.GetLength()==0) return; + if (m_currentTrigger.GetLength() == 0) { + return; + } - CIniFileSection& sec=ini.sections["Events"]; + CIniFileSection& sec=ini.AddSection("Events"); - int cval=atoi(GetParam(sec.values[(LPCTSTR)m_currentTrigger],0)); + int cval = atoi(GetParam(sec.GetString(m_currentTrigger), 0)); cval++; char c[50]; itoa(cval,c,10); - sec.values[(LPCTSTR)m_currentTrigger]=SetParam(sec.values[(LPCTSTR)m_currentTrigger],0,c); - sec.values[(LPCTSTR)m_currentTrigger]+=",0,0,0"; + sec.SetString(m_currentTrigger, SetParam(sec[m_currentTrigger], 0, c)); + sec.SetString(m_currentTrigger, ",0,0,0"); UpdateDialog(); @@ -152,20 +154,21 @@ void CTriggerEventsDlg::OnDeleteevent() //MessageBox(d); CIniFile& ini=Map->GetIniFile(); - if(m_currentTrigger.GetLength()==0) return; + if (m_currentTrigger.GetLength() == 0) { + return; + } int sel2=m_Event.GetCurSel(); - if(sel2<0) return; + if (sel2 < 0) { + return; + } int curev=m_Event.GetItemData(sel2); - if(MessageBox("Do you really want to delete this event?","Delete event", MB_YESNO)==IDNO) return; + if (MessageBox("Do you really want to delete this event?", "Delete event", MB_YESNO) == IDNO) { + return; + } - - CIniFileSection& sec=ini.sections["Events"]; - - CString data; - data=sec.values[(LPCTSTR)m_currentTrigger]; - - CString orig_data=data; + auto const & orig_data = ini["Events"][m_currentTrigger]; + CString data = orig_data; int v=atoi(GetParam(data,0)); char c[50]; @@ -183,15 +186,18 @@ void CTriggerEventsDlg::OnDeleteevent() BOOL bEvent1Needs4=FALSE; - if(GetParam(data, pos+1)=="2") bEvent1Needs4=TRUE; + if (GetParam(data, pos + 1) == "2") { + bEvent1Needs4 = TRUE; + } int count=3; - if(bEvent1Needs4) count=4; + if (bEvent1Needs4) { + count = 4; + } int del_start=FindTokenX(data, ',', pos); int del_end=FindTokenX(data, ',', pos+count); - if(del_end<0) - { + if (del_end < 0) { // beyond end, so delete all... del_end=data.GetLength(); @@ -216,7 +222,7 @@ void CTriggerEventsDlg::OnDeleteevent() } }*/ - sec.values[(LPCTSTR)m_currentTrigger]=data; + ini.SetString("Events", m_currentTrigger, data); UpdateDialog(); } @@ -225,27 +231,30 @@ void CTriggerEventsDlg::OnSelchangeEvent() { CIniFile& ini=Map->GetIniFile(); - if(m_currentTrigger.GetLength()==0) return; + if (m_currentTrigger.GetLength() == 0) { + return; + } int selev=m_Event.GetCurSel(); - if(selev<0) return; + if (selev < 0) { + return; + } int curev=m_Event.GetItemData(selev); int i; - CString EventData; - EventData=ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]; + auto const& EventData = ini["Events"][m_currentTrigger]; int startpos=GetEventParamStart(EventData, curev); //1+curev*3; CString EventType=GetParam(EventData,startpos); m_EventType.SetWindowText(EventType); - for(i=0;iGetIniFile(); - if(m_currentTrigger.GetLength()==0) return; + if (m_currentTrigger.GetLength() == 0) { + return; + } int selev=m_Event.GetCurSel(); - if(selev<0) return; + if (selev < 0) { + return; + } int curev=m_Event.GetItemData(selev); CString e1,e2; @@ -268,19 +281,19 @@ void CTriggerEventsDlg::OnEditchangeEventtype() m_EventType.GetWindowText(eventtype); TruncSpace(eventtype); - if(eventtype.GetLength()==0) - { - eventtype="0"; + if (eventtype.GetLength() == 0) { + eventtype = "0"; m_EventType.SetWindowText(eventtype); } - int pos=GetEventParamStart(ini.sections["Events"].values[(LPCTSTR)m_currentTrigger], curev); //1+3*curev; + int pos = GetEventParamStart(ini["Events"][m_currentTrigger], curev); //1+3*curev; - BOOL bAlready4=FALSE; - if(atoi(GetParam(ini.sections["Events"].values[(LPCTSTR)m_currentTrigger], pos+1))==2) - bAlready4=TRUE; + BOOL bAlready4 = FALSE; + if (atoi(GetParam(ini["Events"][m_currentTrigger], pos + 1)) == 2) { + bAlready4 = TRUE; + } - ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]=SetParam(ini.sections["Events"].values[(LPCTSTR)m_currentTrigger], pos, (LPCTSTR)eventtype); + ini.SetString("Events", m_currentTrigger, SetParam(ini["Events"][m_currentTrigger], pos, eventtype)); CString evsec="Events"; @@ -289,12 +302,16 @@ void CTriggerEventsDlg::OnEditchangeEventtype() #endif - if(g_data.sections[evsec].FindName(eventtype)<0) return; - eventdata=g_data.sections[evsec].values[eventtype]; + if (!g_data[evsec].Exists(eventtype)) { + return; + } + eventdata = g_data[evsec][eventtype]; #ifdef RA2_MODE - if(g_data.sections["EventsRA2"].FindName(eventtype)>=0) - eventdata=g_data.sections["EventsRA2"].values[eventtype]; + auto const ra2EventConf = g_data.GetString("EventsRA2", eventtype); + if (!ra2EventConf.IsEmpty()) { + eventdata = ra2EventConf; + } #endif CString desc=GetParam(eventdata,5); @@ -307,59 +324,51 @@ void CTriggerEventsDlg::OnEditchangeEventtype() int pListType[2]; - pListType[0]=atoi(GetParam(g_data.sections["ParamTypes"].values[ptype[0]], 1)); - pListType[1]=atoi(GetParam(g_data.sections["ParamTypes"].values[ptype[1]], 1)); + pListType[0]=atoi(GetParam(g_data["ParamTypes"][ptype[0]], 1)); + pListType[1]=atoi(GetParam(g_data["ParamTypes"][ptype[1]], 1)); - int code=atoi(GetParam(g_data.sections["ParamTypes"].values[ptype[0]], 2)); // usually 0 + int code = atoi(GetParam(g_data["ParamTypes"][ptype[0]], 2)); // usually 0 // ************************************** // MW ADD SUPPORT FOR 2 PARAMS+CODE - if(code==2) - { + if (code == 2) { // add code + event 0 ONLY IF THEY DO NOT ALREADY EXIST - if(!bAlready4) ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]=SetParam(ini.sections["Events"].values[(LPCTSTR)m_currentTrigger], pos+1, "2,0"); - - } - else - { + if (!bAlready4) { + ini.SetString("Events", m_currentTrigger, SetParam(ini["Events"][m_currentTrigger], pos + 1, "2,0")); + } + } else { // remove code + event 0 char c[50]; itoa(code, c, 10); - ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]=SetParam(ini.sections["Events"].values[(LPCTSTR)m_currentTrigger], pos+1, c); + ini.SetString("Events", m_currentTrigger, SetParam(ini["Events"][m_currentTrigger], pos + 1, c)); - if(bAlready4) - { - - CString& data=ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]; - - int del_start=FindTokenX(data, ',', pos+2); - int del_end=FindTokenX(data, ',', pos+3); - if(del_end<0) - { + if (bAlready4) { + CString data = ini["Events"][m_currentTrigger]; + int del_start = FindTokenX(data, ',', pos + 2); + int del_end = FindTokenX(data, ',', pos + 3); + if (del_end < 0) { // beyond end, so delete all... - del_end=data.GetLength(); + del_end = data.GetLength(); } - data.Delete(del_start, del_end-del_start); + data.Delete(del_start, del_end - del_start); + ini.SetString("Events", m_currentTrigger, data); } } // ************************************** int i; - for(i=0;i<2;i++) - { - int add=0; - if(code==2) add=1; - - if(atoi(ptype[i])!=0 && atoi(ptype[i])>0 && atoi(ptype[i])!=47) - { - CString paramname=GetParam(g_data.sections["ParamTypes"].values[ptype[i]], 0); - - m_Parameter.SetItemData(m_Parameter.AddString(paramname), i+add); - } - - + for (i = 0; i < 2; i++) { + int add = 0; + if (code == 2) { + add = 1; + } + if (atoi(ptype[i]) != 0 && atoi(ptype[i]) > 0 && atoi(ptype[i]) != 47) { + CString paramname = GetParam(g_data["ParamTypes"][ptype[i]], 0); + + m_Parameter.SetItemData(m_Parameter.AddString(paramname), i + add); + } } m_ParamValue.SetWindowText(""); @@ -369,126 +378,127 @@ void CTriggerEventsDlg::OnEditchangeEventtype() } - - RepairTrigger(ini.sections["Triggers"].values[m_currentTrigger]); - + auto triggerInfoCopy = ini["Triggers"][m_currentTrigger]; + if (RepairTrigger(triggerInfoCopy)) { + ini.SetString("Triggers", m_currentTrigger, triggerInfoCopy); + } } -void CTriggerEventsDlg::OnSelchangeParameter() +void CTriggerEventsDlg::OnSelchangeParameter() { - CIniFile& ini=Map->GetIniFile(); + CIniFile& ini = Map->GetIniFile(); - if(m_currentTrigger.GetLength()==0) return; - int selev=m_Event.GetCurSel(); - if(selev<0) return; - int curev=m_Event.GetItemData(selev); + if (m_currentTrigger.GetLength() == 0) { + return; + } + int selev = m_Event.GetCurSel(); + if (selev < 0) { + return; + } + int curev = m_Event.GetItemData(selev); - int curselparam=m_Parameter.GetCurSel(); - if(curselparam<0) - { + int curselparam = m_Parameter.GetCurSel(); + if (curselparam < 0) { m_ParamValue.SetWindowText(""); return; } - + int curparam = m_Parameter.GetItemData(curselparam); + auto const EventData = ini["Events"][m_currentTrigger]; + int startpos = GetEventParamStart(EventData, curev);//1+curev*3; - int curparam=m_Parameter.GetItemData(curselparam); - - - CString EventData; - EventData=ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]; - - int startpos=GetEventParamStart(EventData, curev);//1+curev*3; - // MW FIX FOR CODE!=0 - int original_cuparam=curparam; + int original_cuparam = curparam; #ifdef RA2_MODE - CString Param1=GetParam(g_data.sections["EventsRA2"].values[GetParam(EventData,startpos)],1); - CString Code=GetParam(g_data.sections["ParamTypes"].values[Param1],2); + CString Param1 = GetParam(g_data["EventsRA2"][GetParam(EventData, startpos)], 1); + CString Code = GetParam(g_data["ParamTypes"][Param1], 2); //MessageBox(Param1, Code); - if(atoi(Code)!=0) curparam--; + if (atoi(Code) != 0) curparam--; #endif // END FIx - CString ParamType=GetParam(g_data.sections["Events"].values[GetParam(EventData,startpos)],1+curparam); + CString ParamType = GetParam(g_data["Events"][GetParam(EventData, startpos)], 1 + curparam); #ifdef RA2_MODE - if(g_data.sections["EventsRA2"].FindName(GetParam(EventData, startpos))>=0) ParamType=GetParam(g_data.sections["EventsRA2"].values[GetParam(EventData,startpos)],1+curparam); + if (g_data["EventsRA2"].FindIndex(GetParam(EventData, startpos)) >= 0) { + ParamType = GetParam(g_data["EventsRA2"][GetParam(EventData, startpos)], 1 + curparam); + } #endif - if(atoi(ParamType)<0) - { + if (atoi(ParamType) < 0) { + return; } - else + + CString ListType = GetParam(g_data["ParamTypes"][ParamType], 1); + + HandleParamList(m_ParamValue, atoi(ListType)); + m_ParamValue.SetWindowText(GetParam(EventData, startpos + 1 + original_cuparam)); + + int i; + BOOL bFound = FALSE; + for (i = 0; i < m_ParamValue.GetCount(); i++) { - CString ListType=GetParam(g_data.sections["ParamTypes"].values[ParamType],1); - - HandleParamList(m_ParamValue, atoi(ListType)); - m_ParamValue.SetWindowText(GetParam(EventData,startpos+1+original_cuparam)); - - int i; - BOOL bFound=FALSE; - for(i=0;iGetIniFile(); + CIniFile& ini = Map->GetIniFile(); - if(m_currentTrigger.GetLength()==0) return; - int selev=m_Event.GetCurSel(); - if(selev<0) return; - int curev=m_Event.GetItemData(selev); + if (m_currentTrigger.GetLength() == 0) { + return; + } + int selev = m_Event.GetCurSel(); + if (selev < 0) { + return; + } + int curev = m_Event.GetItemData(selev); - int curselparam=m_Parameter.GetCurSel(); - if(curselparam<0) + int curselparam = m_Parameter.GetCurSel(); + if (curselparam < 0) { m_ParamValue.SetWindowText(""); return; } - int curparam=m_Parameter.GetItemData(curselparam); - - CString EventData; - EventData=ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]; - - int startpos=GetEventParamStart(EventData, curev);// 1+curev*3; + int curparam = m_Parameter.GetItemData(curselparam); + + auto const& eventData = ini["Events"][m_currentTrigger]; + + int startpos = GetEventParamStart(eventData, curev);// 1+curev*3; CString newVal; @@ -496,9 +506,11 @@ void CTriggerEventsDlg::OnEditchangeParamvalue() TruncSpace(newVal); newVal.TrimLeft(); - if(newVal.Find(",",0)>=0) newVal.SetAt(newVal.Find(",",0), 0); + if (newVal.Find(",", 0) >= 0) { + newVal.SetAt(newVal.Find(",", 0), 0); + } - ini.sections["Events"].values[(LPCTSTR)m_currentTrigger]=SetParam(EventData, startpos+1+curparam, newVal); + ini.SetString("Events", m_currentTrigger, SetParam(eventData, startpos + 1 + curparam, newVal)); } void CTriggerEventsDlg::UpdateDialog() @@ -523,26 +535,23 @@ void CTriggerEventsDlg::UpdateDialog() CString sec="EventsRA2"; #endif - for(i=0;i=0) + if(g_data.sections["EventsRA2"].FindIndex(eventid)>=0) eventdata=g_data.sections["EventsRA2"].values[eventid]; #endif*/ - CString text=eventid+" "+GetParam(eventdata,0); - text.Replace("%1",","); + CString text = eventid + " " + GetParam(eventdata, 0); + text.Replace("%1", ","); #ifdef RA2_MODE // MW 07/18/01 // for yuri mode, only check if it´s for RA2, else support it only if YR isnt´needed... - if(GetParam(eventdata, 7)=="1" && ( yuri_mode || !atoi(GetParam(eventdata,9)) ) ) - { + if (GetParam(eventdata, 7) == "1" && (yuri_mode || !atoi(GetParam(eventdata, 9)))) { #else - if(GetParam(eventdata, 6)=="1") + if (GetParam(eventdata, 6) == "1") { #endif m_EventType.AddString(text); @@ -554,8 +563,8 @@ void CTriggerEventsDlg::UpdateDialog() int cur_sel=m_Event.GetCurSel(); while(m_Event.DeleteString(0)!=CB_ERR); - CString Data=ini.sections["Events"].values[m_currentTrigger]; - int count=atoi(GetParam(Data,0)); + auto const& data = ini["Events"][m_currentTrigger]; + int count = atoi(GetParam(data, 0)); for(i=0;i=count) cur_sel=count-1; + if (cur_sel < 0) { + cur_sel = 0; + } + if (cur_sel >= count) { + cur_sel = count - 1; + } m_Event.SetCurSel(cur_sel);