mirror of
https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor.git
synced 2025-05-04 10:51:39 -04:00
++
This commit is contained in:
parent
2b2ad48ead
commit
6935582683
1 changed files with 92 additions and 84 deletions
|
@ -128,24 +128,31 @@ void CTriggerEditorDlg::UpdateDialog()
|
|||
while(m_Trigger.DeleteString(0)!=CB_ERR);
|
||||
m_Trigger.SetWindowText("");
|
||||
|
||||
for(i=0;i<ini.sections["Triggers"].values.size();i++)
|
||||
{
|
||||
CString type;
|
||||
CString s;
|
||||
type=*ini.sections["Triggers"].GetValueName(i);
|
||||
|
||||
s=GetParam(ini.sections["Triggers"].values[type], 2);
|
||||
|
||||
if(ini.sections["Triggers"].values[type].GetLength()==0) continue;
|
||||
auto const& triggersSec = ini["Triggers"];
|
||||
for (i = 0; i < triggersSec.Size(); i++) {
|
||||
auto const& [type, params] = triggersSec.Nth(i);
|
||||
|
||||
int id=m_Trigger.AddString(s);
|
||||
m_Trigger.SetItemData(id, i);
|
||||
auto s = GetParam(params, 2);
|
||||
|
||||
if (params.IsEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int id = m_Trigger.AddString(s);
|
||||
m_Trigger.SetItemData(id, i);
|
||||
}
|
||||
|
||||
if(curData<0) curData=0;
|
||||
if(curData>=m_Trigger.GetCount()) curData=m_Trigger.GetCount()-1;
|
||||
if (curData < 0) {
|
||||
curData = 0;
|
||||
}
|
||||
if (curData >= m_Trigger.GetCount()) {
|
||||
curData = m_Trigger.GetCount() - 1;
|
||||
}
|
||||
|
||||
if(ini.sections["Triggers"].values.size()) m_Trigger.SetCurSel(0);
|
||||
if (ini["Triggers"].Size()) {
|
||||
m_Trigger.SetCurSel(0);
|
||||
}
|
||||
|
||||
for(i=0;i<m_Trigger.GetCount();i++)
|
||||
if(m_Trigger.GetItemData(i)==curData)
|
||||
|
@ -162,24 +169,22 @@ void CTriggerEditorDlg::OnNewtrigger()
|
|||
CIniFile& ini=Map->GetIniFile();
|
||||
|
||||
CString ID_T=GetFreeID();
|
||||
ini.sections["Triggers"].values[ID_T]=Map->GetHouseID(0, TRUE)+",<none>,New trigger,0,1,1,1,0";
|
||||
ini.sections["Events"].values[ID_T]="0";
|
||||
ini.sections["Actions"].values[ID_T]="0";
|
||||
ini.SetString("Triggers", ID_T, Map->GetHouseID(0, TRUE) + ",<none>,New trigger,0,1,1,1,0");
|
||||
ini.SetString("Events", ID_T, "0");
|
||||
ini.SetString("Actions", ID_T, "0");
|
||||
|
||||
//if(MessageBox("Trigger created. If you want to create a simple tag now, press Yes. The tag will be called ""New tag"", you should name it like the trigger (after you have set up the trigger).","Trigger created",MB_YESNO))
|
||||
{
|
||||
CString ID_TAG=GetFreeID();
|
||||
ini.sections["Tags"].values[ID_TAG]="0,New tag,";
|
||||
ini.sections["Tags"].values[ID_TAG]+=ID_T;
|
||||
ini.SetString("Tags",ID_TAG, "0,New tag," + ID_T);
|
||||
}
|
||||
|
||||
((CFinalSunDlg*)theApp.m_pMainWnd)->UpdateDialogs(TRUE);
|
||||
|
||||
int i;
|
||||
for(i=0;i<m_Trigger.GetCount();i++)
|
||||
{
|
||||
if(m_Trigger.GetItemData(i)==ini.sections["Triggers"].FindName(ID_T))
|
||||
for (auto i = 0; i < m_Trigger.GetCount(); i++) {
|
||||
if (m_Trigger.GetItemData(i) == ini["Triggers"].FindIndex(ID_T)) {
|
||||
m_Trigger.SetCurSel(i);
|
||||
}
|
||||
}
|
||||
OnSelchangeTrigger();
|
||||
|
||||
|
@ -196,28 +201,23 @@ void CTriggerEditorDlg::OnDeletetrigger()
|
|||
int res=MessageBox("If you want to delete all attached tags, too, press 'Yes'.\nIf you don´t want to delete these tags, press 'No'.\nIf you want to cancel deletion of the trigger, press 'Cancel'.\n\nNote: CellTags will never be deleted using this function","Delete trigger", MB_YESNOCANCEL);
|
||||
if(res==IDCANCEL) return;
|
||||
|
||||
CString trigger=*ini.sections["Triggers"].GetValueName(curtrig);
|
||||
auto const& triggerId = ini["Triggers"].Nth(curtrig).first;
|
||||
|
||||
if(res==IDYES)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<ini.sections["Tags"].values.size();i++)
|
||||
{
|
||||
CString type=*ini.sections["Tags"].GetValueName(i);
|
||||
|
||||
CString attTrigg=GetParam(ini.sections["Tags"].values[type], 2);
|
||||
|
||||
if(trigger==attTrigg)
|
||||
{
|
||||
ini.sections["Tags"].values.erase(type);
|
||||
if (res == IDYES) {
|
||||
CString keyToDelete;
|
||||
for (auto const& [type, def] : ini["Tags"]) {
|
||||
auto const attTrigg = GetParam(def, 2);
|
||||
if (triggerId == attTrigg) {
|
||||
keyToDelete = type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
ini.RemoveValueByKey("Tags", keyToDelete);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ini.sections["Triggers"].values.erase((LPCTSTR)trigger);
|
||||
ini.sections["Events"].values.erase((LPCTSTR)trigger);
|
||||
ini.sections["Actions"].values.erase((LPCTSTR)trigger);
|
||||
ini.RemoveValueByKey("Triggers", triggerId);
|
||||
ini.RemoveValueByKey("Events", triggerId);
|
||||
ini.RemoveValueByKey("Actions", triggerId);
|
||||
|
||||
((CFinalSunDlg*)theApp.m_pMainWnd)->UpdateDialogs(TRUE);
|
||||
|
||||
|
@ -235,27 +235,38 @@ void CTriggerEditorDlg::OnEditchangeTrigger()
|
|||
CIniFile& ini=Map->GetIniFile();
|
||||
|
||||
int curSel=m_Trigger.GetCurSel();
|
||||
if(curSel<0)
|
||||
{
|
||||
m_TriggerOptions.m_currentTrigger="";
|
||||
if(m_TriggerOptions.m_hWnd) m_TriggerOptions.UpdateDialog();
|
||||
m_TriggerEvents.m_currentTrigger="";
|
||||
if(m_TriggerEvents.m_hWnd) m_TriggerEvents.UpdateDialog();
|
||||
m_TriggerActions.m_currentTrigger="";
|
||||
if(m_TriggerActions.m_hWnd) m_TriggerActions.UpdateDialog();
|
||||
if (curSel < 0) {
|
||||
m_TriggerOptions.m_currentTrigger = "";
|
||||
if (m_TriggerOptions.m_hWnd) {
|
||||
m_TriggerOptions.UpdateDialog();
|
||||
}
|
||||
m_TriggerEvents.m_currentTrigger = "";
|
||||
if (m_TriggerEvents.m_hWnd) {
|
||||
m_TriggerEvents.UpdateDialog();
|
||||
}
|
||||
m_TriggerActions.m_currentTrigger = "";
|
||||
if (m_TriggerActions.m_hWnd) {
|
||||
m_TriggerActions.UpdateDialog();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
int curInd=m_Trigger.GetItemData(curSel);
|
||||
|
||||
CString Trigger=*ini.sections["Triggers"].GetValueName(curInd);
|
||||
auto const triggerId=ini["Triggers"].Nth(curInd).first;
|
||||
|
||||
m_TriggerOptions.m_currentTrigger=Trigger;
|
||||
if(m_TriggerOptions.m_hWnd) m_TriggerOptions.UpdateDialog();
|
||||
m_TriggerEvents.m_currentTrigger=Trigger;
|
||||
if(m_TriggerEvents.m_hWnd) m_TriggerEvents.UpdateDialog();
|
||||
m_TriggerActions.m_currentTrigger=Trigger;
|
||||
if(m_TriggerActions.m_hWnd) m_TriggerActions.UpdateDialog();
|
||||
m_TriggerOptions.m_currentTrigger=triggerId;
|
||||
if (m_TriggerOptions.m_hWnd) {
|
||||
m_TriggerOptions.UpdateDialog();
|
||||
}
|
||||
m_TriggerEvents.m_currentTrigger = triggerId;
|
||||
if (m_TriggerEvents.m_hWnd) {
|
||||
m_TriggerEvents.UpdateDialog();
|
||||
}
|
||||
m_TriggerActions.m_currentTrigger = triggerId;
|
||||
if (m_TriggerActions.m_hWnd) {
|
||||
m_TriggerActions.UpdateDialog();
|
||||
}
|
||||
}
|
||||
|
||||
void CTriggerEditorDlg::OnSelchangeTriggertab(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
|
@ -288,25 +299,21 @@ void CTriggerEditorDlg::OnPlaceonmap()
|
|||
CIniFile& ini=Map->GetIniFile();
|
||||
|
||||
int sel=m_Trigger.GetCurSel();
|
||||
if(sel<0) return;
|
||||
if (sel < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int curtrig=m_Trigger.GetItemData(sel);
|
||||
|
||||
CString trigger=*ini.sections["Triggers"].GetValueName(curtrig);
|
||||
|
||||
int i;
|
||||
auto const triggerId = ini["Triggers"].Nth(curtrig).first;
|
||||
CString tag;
|
||||
for(i=0;i<ini.sections["Tags"].values.size();i++)
|
||||
{
|
||||
CString type=*ini.sections["Tags"].GetValueName(i);
|
||||
|
||||
CString attTrigg=GetParam(ini.sections["Tags"].values[type], 2);
|
||||
|
||||
if(trigger==attTrigg)
|
||||
{
|
||||
tag=type;
|
||||
for (auto const& [type, def] : ini["Tags"]) {
|
||||
CString attTrigg = GetParam(def, 2);
|
||||
if (triggerId == attTrigg) {
|
||||
tag = type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AD.mode=ACTIONMODE_CELLTAG;
|
||||
|
@ -319,31 +326,32 @@ void CTriggerEditorDlg::OnClone()
|
|||
CIniFile& ini=Map->GetIniFile();
|
||||
|
||||
int sel=m_Trigger.GetCurSel();
|
||||
if(sel<0) return;
|
||||
if (sel < 0) {
|
||||
return;
|
||||
}
|
||||
int curtrig=m_Trigger.GetItemData(sel);
|
||||
|
||||
CString trigger=*ini.sections["Triggers"].GetValueName(curtrig);
|
||||
auto const& triggerId = ini["Triggers"].Nth(curtrig).first;
|
||||
|
||||
CString ID_T=GetFreeID();
|
||||
ini.sections["Triggers"].values[ID_T]=ini.sections["Triggers"].values[trigger];
|
||||
ini.sections["Events"].values[ID_T]=ini.sections["Events"].values[trigger];
|
||||
ini.sections["Actions"].values[ID_T]=ini.sections["Actions"].values[trigger];
|
||||
CString newId = GetFreeID();
|
||||
ini.SetString("Triggers", newId, ini["Triggers"][triggerId]);
|
||||
ini.SetString("Events", newId, ini["Events"][triggerId]);
|
||||
ini.SetString("Actions", newId, ini["Actions"][triggerId]);
|
||||
|
||||
ini.sections["Triggers"].values[ID_T]=SetParam(ini.sections["Triggers"].values[ID_T], 2, GetParam(ini.sections["Triggers"].values[ID_T], 2) + " Clone");
|
||||
ini.SetString("Triggers", newId, SetParam(ini["Triggers"][newId], 2, GetParam(ini["Triggers"][newId], 2) + " Clone"));
|
||||
|
||||
{
|
||||
CString ID_TAG=GetFreeID();
|
||||
ini.sections["Tags"].values[ID_TAG]=(CString)"0,"+GetParam(ini.sections["Triggers"].values[ID_T], 2)+",";
|
||||
ini.sections["Tags"].values[ID_TAG]+=ID_T;
|
||||
CString newTagId = GetFreeID();
|
||||
ini.SetString("Tags", newTagId, "0," + GetParam(ini["Triggers"][newId], 2) + ",");
|
||||
ini.SetString("Tags", newTagId, newId);
|
||||
}
|
||||
|
||||
((CFinalSunDlg*)theApp.m_pMainWnd)->UpdateDialogs(TRUE);
|
||||
|
||||
int i;
|
||||
for(i=0;i<m_Trigger.GetCount();i++)
|
||||
{
|
||||
if(m_Trigger.GetItemData(i)==ini.sections["Triggers"].FindName(ID_T))
|
||||
for (auto i = 0; i < m_Trigger.GetCount(); i++) {
|
||||
if (m_Trigger.GetItemData(i) == ini["Triggers"].FindIndex(newId)) {
|
||||
m_Trigger.SetCurSel(i);
|
||||
}
|
||||
}
|
||||
OnSelchangeTrigger();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue