// 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);
}