diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/runmapcfgdlg.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/runmapcfgdlg.cpp')
| -rw-r--r-- | hammer/runmapcfgdlg.cpp | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/hammer/runmapcfgdlg.cpp b/hammer/runmapcfgdlg.cpp new file mode 100644 index 0000000..70f940d --- /dev/null +++ b/hammer/runmapcfgdlg.cpp @@ -0,0 +1,160 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +// RunMapCfgDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "hammer.h" +#include "RunMapCfgDlg.h" +#include "StrDlg.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include <tier0/memdbgon.h> + +///////////////////////////////////////////////////////////////////////////// +// CRunMapCfgDlg dialog + + +CRunMapCfgDlg::CRunMapCfgDlg(CWnd* pParent /*=NULL*/) + : CDialog(CRunMapCfgDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CRunMapCfgDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + + m_pApp = (CHammer*) AfxGetApp(); +} + + +void CRunMapCfgDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CRunMapCfgDlg) + DDX_Control(pDX, IDC_CONFIGURATIONS, m_cConfigurations); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CRunMapCfgDlg, CDialog) + //{{AFX_MSG_MAP(CRunMapCfgDlg) + ON_BN_CLICKED(IDC_NEW, OnNew) + ON_BN_CLICKED(IDC_REMOVE, OnRemove) + ON_BN_CLICKED(IDC_RENAME, OnRename) + ON_BN_CLICKED(IDC_COPY, OnCopy) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CRunMapCfgDlg message handlers + +void CRunMapCfgDlg::AddSequenceToList(int iIndex, CCommandSequence *pSeq) +{ + iIndex = m_cConfigurations.InsertString(iIndex, pSeq->m_szName); + m_cConfigurations.SetItemDataPtr(iIndex, PVOID(pSeq)); + m_cConfigurations.SetCurSel(iIndex); +} + +void CRunMapCfgDlg::OnNew() +{ + // add a new sequence + CStrDlg dlg(0, "", "Name:", "New Configuration"); + if(dlg.DoModal() == IDCANCEL) + return; + + // add it to the list in the app + CCommandSequence *pSeq = new CCommandSequence; + strcpy(pSeq->m_szName, dlg.m_string); + m_pApp->m_CmdSequences.Add(pSeq); + + AddSequenceToList(-1, pSeq); +} + +void CRunMapCfgDlg::OnRemove() +{ + int iSel = m_cConfigurations.GetCurSel(); + if(iSel == LB_ERR) + return; // nothing selected + if(AfxMessageBox("Do you want to remove this configuration?", + MB_YESNO) == IDNO) + return; // don't want to + CCommandSequence *pSeq = (CCommandSequence*) + m_cConfigurations.GetItemDataPtr(iSel); + + // find it in the app's array + for(int i = 0; i < m_pApp->m_CmdSequences.GetSize(); i++) + { + if(pSeq == m_pApp->m_CmdSequences[i]) + { + delete pSeq; + m_pApp->m_CmdSequences.RemoveAt(i); + m_cConfigurations.DeleteString(iSel); + return; // done + } + } + + // shouldn't reach here - + Assert(0); +} + +void CRunMapCfgDlg::OnRename() +{ + int iSel = m_cConfigurations.GetCurSel(); + if(iSel == LB_ERR) + return; // nothing selected + CCommandSequence *pSeq = (CCommandSequence*) + m_cConfigurations.GetItemDataPtr(iSel); + + CStrDlg dlg(0, pSeq->m_szName, "Name:", "Rename Configuration"); + if(dlg.DoModal() == IDCANCEL) + return; + + strcpy(pSeq->m_szName, dlg.m_string); + + m_cConfigurations.DeleteString(iSel); + AddSequenceToList(iSel, pSeq); +} + +BOOL CRunMapCfgDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // add the configurations into the list + int iSize = m_pApp->m_CmdSequences.GetSize(); + for(int i = 0; i < iSize; i++) + { + CCommandSequence *pSeq = m_pApp->m_CmdSequences[i]; + int iIndex = m_cConfigurations.AddString(pSeq->m_szName); + m_cConfigurations.SetItemDataPtr(iIndex, PVOID(pSeq)); + } + + return TRUE; +} + +void CRunMapCfgDlg::OnCopy() +{ + int iSel = m_cConfigurations.GetCurSel(); + if(iSel == LB_ERR) + return; // nothing selected + + // add a new sequence + CStrDlg dlg(0, "", "Name:", "Copy Configuration"); + if(dlg.DoModal() == IDCANCEL) + return; + + // add it to the list in the app + CCommandSequence *pSeq = new CCommandSequence; + strcpy(pSeq->m_szName, dlg.m_string); + m_pApp->m_CmdSequences.Add(pSeq); + + CCommandSequence *pSrcSeq = (CCommandSequence*) + m_cConfigurations.GetItemDataPtr(iSel); + + pSeq->m_Commands.Append(pSrcSeq->m_Commands); + + AddSequenceToList(-1, pSeq); +} |