// triggerd.cpp : implementation file // #include "stdafx.h" #include "gmud32.h" #include "triggerd.h" #include "trigger.h" #include "mmsystem.h" #include "selarray.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif BEGIN_MESSAGE_MAP(CTriggerDialog, CDialog) //{{AFX_MSG_MAP(CTriggerDialog) ON_BN_CLICKED(IDC_BROWSE_FILE, OnBrowseFile) ON_BN_CLICKED(IDC_DELETE, OnDelete) ON_BN_CLICKED(IDADD, OnAdd) ON_CBN_SELCHANGE(IDC_TRIGGER_LIST, OnSelchangeTriggerList) ON_BN_CLICKED(IDC_TEST_SOUND, OnTestSound) //}}AFX_MSG_MAP END_MESSAGE_MAP() #define new DEBUG_NEW ///////////////////////////////////////////////////////////////////////////// // CTriggerDialog dialog CTriggerDialog::CTriggerDialog(CWnd* pParent /*=NULL*/) : CDialog(CTriggerDialog::IDD, pParent) { //{{AFX_DATA_INIT(CTriggerDialog) m_sFileName = _T(""); m_sMudText = _T(""); m_sTrigger = _T(""); //}}AFX_DATA_INIT m_pTriggers=0; } void CTriggerDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTriggerDialog) DDX_Text(pDX, IDC_FILENAME, m_sFileName); DDX_Text(pDX, IDC_MUDTEXT, m_sMudText); DDX_CBString(pDX, IDC_TRIGGER_LIST, m_sTrigger); //}}AFX_DATA_MAP } ///////////////////////////////////////////////////////////////////////////// // CTriggerDialog message handlers BOOL CTriggerDialog::SetTriggers(CSelArray *pArray) { m_pTriggers=pArray; return TRUE; } CTrigger *CTriggerDialog::GetTrigger(int index) { ASSERT_VALID(m_pTriggers); ASSERT(index >= 0 && index < m_pTriggers->GetSize()); return (CTrigger *)m_pTriggers->Get(index); } CTrigger *CTriggerDialog::GetTrigger(CString sName) { return (CTrigger *)m_pTriggers->Get(sName); } int CTriggerDialog::GetNumTriggers() { return m_pTriggers->GetSize(); } void CTriggerDialog::OnBrowseFile() { UpdateData(TRUE); CFileDialog dlg(TRUE, NULL, m_sFileName, NULL, // flags "Wave Files (*.wav)|*.wav|AVI Files (*.avi)|*.avi|All Files (*.*) |*.*||", this // parent window ); if(dlg.DoModal()==IDOK) { m_sFileName=dlg.GetPathName(); } UpdateData(FALSE); } void CTriggerDialog::OnDelete() { UpdateData(TRUE); CTrigger *pTrigger = GetTrigger(m_sTrigger); if(m_sTrigger=="") { AfxMessageBox("Select a trigger, then hit delete"); } else { m_pTriggers->Delete(m_sTrigger); } CComboBox *pCb= (CComboBox *)GetDlgItem(IDC_TRIGGER_LIST); ASSERT_VALID(pCb); pCb->ResetContent(); for(int loop=0;loop<GetNumTriggers();loop++) { pCb->AddString(GetTrigger(loop)->GetName()); } } void CTriggerDialog::OnOK() { UpdateData(TRUE); CTrigger *pTrigger = GetTrigger(m_sTrigger); if(!pTrigger) { TRACE("OnSelChangeTriggerList():Couldn't save trigger\n"); } else { pTrigger->SetName(m_sTrigger); pTrigger->m_sFileName = m_sFileName; pTrigger->m_sMudOutput = m_sMudText; } CDialog::OnOK(); } BOOL CTriggerDialog::OnInitDialog() { ASSERT_VALID(m_pTriggers); CDialog::OnInitDialog(); CComboBox *pCb= (CComboBox *)GetDlgItem(IDC_TRIGGER_LIST); ASSERT_VALID(pCb); for(int loop=0;loop<GetNumTriggers();loop++) { pCb->AddString(GetTrigger(loop)->GetName()); } CenterWindow(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CTriggerDialog::OnAdd() { UpdateData(TRUE); if(m_sTrigger=="") { AfxMessageBox("Enter the trigger text in the combo box, then select ADD"); return; } CTrigger *pTrigger = GetTrigger(m_sTrigger); if(!pTrigger) { pTrigger = new CTrigger; m_pTriggers->Add(pTrigger); } pTrigger->SetName(m_sTrigger); CComboBox *pCb= (CComboBox *)GetDlgItem(IDC_TRIGGER_LIST); ASSERT_VALID(pCb); pCb->ResetContent(); for(int loop=0;loop<GetNumTriggers();loop++) { pCb->AddString(GetTrigger(loop)->GetName()); } UpdateData(FALSE); } void CTriggerDialog::OnSelchangeTriggerList() { UpdateData(TRUE); CTrigger *pTrigger = GetTrigger(m_sTrigger); if(!pTrigger) { TRACE("OnSelChangeTriggerList():Couldn't save trigger\n"); } else { pTrigger->SetName(m_sTrigger); pTrigger->m_sFileName = m_sFileName; pTrigger->m_sMudOutput = m_sMudText; } CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_TRIGGER_LIST); ASSERT_VALID(pCombo); pCombo->GetLBText(pCombo->GetCurSel(),m_sTrigger); pTrigger=GetTrigger(m_sTrigger); if(!pTrigger) { TRACE("OnSelChangeTriggerList():Couldn't Load trigger\n"); } else { m_sTrigger=pTrigger->GetName() ; m_sFileName=pTrigger->m_sFileName ; m_sMudText=pTrigger->m_sMudOutput ; } UpdateData(FALSE); } void CTriggerDialog::OnTestSound() { UpdateData(TRUE); sndPlaySound(m_sFileName,SND_ASYNC); }