Serious-Engine/Sources/Modeler/DlgPgInfoAttachingSound.cpp
2016-03-11 15:57:17 +02:00

151 lines
4.2 KiB
C++

/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
// DlgPgInfoAttachingSound.cpp : implementation file
//
#include "stdafx.h"
#ifdef _DEBUG
#undef new
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgPgInfoAttachingSound property page
IMPLEMENT_DYNCREATE(CDlgPgInfoAttachingSound, CPropertyPage)
CDlgPgInfoAttachingSound::CDlgPgInfoAttachingSound() : CPropertyPage(CDlgPgInfoAttachingSound::IDD)
{
//{{AFX_DATA_INIT(CDlgPgInfoAttachingSound)
m_strAttachedSound = _T("");
m_bLooping = FALSE;
m_bPlaying = FALSE;
m_fDelay = 0.0f;
//}}AFX_DATA_INIT
}
CDlgPgInfoAttachingSound::~CDlgPgInfoAttachingSound()
{
}
void CDlgPgInfoAttachingSound::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
CModelerView *pModelerView = CModelerView::GetActiveView();
if(pModelerView == NULL) return;
CModelerDoc* pDoc = pModelerView->GetDocument();
CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
// if transfering data from document to dialog
if( !pDX->m_bSaveAndValidate)
{
m_strAttachedSound = asSound.as_fnAttachedSound;
if( m_strAttachedSound == "")
m_strAttachedSound = "<No sound>";
m_bLooping = asSound.as_bLooping;
m_bPlaying = asSound.as_bPlaying;
m_fDelay = asSound.as_fDelay;
// mark that the values have been updated to reflect the state of the view
m_udAllValues.MarkUpdated();
}
//{{AFX_DATA_MAP(CDlgPgInfoAttachingSound)
DDX_Text(pDX, IDC_ATTACHING_SOUND_T, m_strAttachedSound);
DDX_Check(pDX, IDC_IS_LOOPING, m_bLooping);
DDX_Check(pDX, IDC_IS_PLAYING, m_bPlaying);
DDX_SkyFloat(pDX, IDC_SOUND_START_DELAY, m_fDelay);
//}}AFX_DATA_MAP
// if transfering data from dialog to document
if( pDX->m_bSaveAndValidate)
{
if( m_strAttachedSound != "<No sound>")
{
asSound.as_fnAttachedSound = CTString( CStringA(m_strAttachedSound));
asSound.as_bLooping = m_bLooping;
asSound.as_bPlaying = m_bPlaying;
asSound.as_fDelay = m_fDelay;
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews( NULL);
}
}
}
BEGIN_MESSAGE_MAP(CDlgPgInfoAttachingSound, CPropertyPage)
//{{AFX_MSG_MAP(CDlgPgInfoAttachingSound)
ON_BN_CLICKED(IDC_BROWSE_SOUND, OnBrowseSound)
ON_BN_CLICKED(IDC_IS_LOOPING, OnIsLooping)
ON_BN_CLICKED(IDC_IS_PLAYING, OnIsPlaying)
ON_BN_CLICKED(IDC_ATTACHING_SOUND_NONE, OnAttachingSoundNone)
ON_EN_CHANGE(IDC_SOUND_START_DELAY, OnChangeSoundStartDelay)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgPgInfoAttachingSound message handlers
BOOL CDlgPgInfoAttachingSound::OnInitDialog()
{
CPropertyPage::OnInitDialog();
return TRUE;
}
BOOL CDlgPgInfoAttachingSound::OnIdle(LONG lCount)
{
return TRUE;
}
void CDlgPgInfoAttachingSound::OnBrowseSound()
{
CModelerView *pModelerView = CModelerView::GetActiveView();
if( pModelerView == NULL) return;
CModelerDoc* pDoc = pModelerView->GetDocument();
CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
// request sound
CTFileName fnNewSound = _EngineGUI.FileRequester(
"Select sound to attach to animation",
FILTER_WAV FILTER_END,
"Sounds directory", "Sounds",
asSound.as_fnAttachedSound.FileName()+asSound.as_fnAttachedSound.FileExt());
if( fnNewSound == "") return;
asSound.as_fnAttachedSound = fnNewSound;
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews( NULL);
UpdateData( FALSE);
}
void CDlgPgInfoAttachingSound::OnAttachingSoundNone()
{
CModelerView *pModelerView = CModelerView::GetActiveView();
if( pModelerView == NULL) return;
CModelerDoc* pDoc = pModelerView->GetDocument();
CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
asSound.as_fnAttachedSound = CTString("");
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews( NULL);
UpdateData( FALSE);
}
void CDlgPgInfoAttachingSound::OnIsLooping()
{
UpdateData( TRUE);
}
void CDlgPgInfoAttachingSound::OnIsPlaying()
{
UpdateData( TRUE);
}
void CDlgPgInfoAttachingSound::OnChangeSoundStartDelay()
{
UpdateData( TRUE);
}