This commit is contained in:
Zero Fanker 2024-04-09 19:40:20 -04:00
parent 2b2ad48ead
commit 6935582683

View file

@ -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();