diff options
Diffstat (limited to 'utils/hlfaceposer/wavefile.cpp')
| -rw-r--r-- | utils/hlfaceposer/wavefile.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/utils/hlfaceposer/wavefile.cpp b/utils/hlfaceposer/wavefile.cpp new file mode 100644 index 0000000..83cd418 --- /dev/null +++ b/utils/hlfaceposer/wavefile.cpp @@ -0,0 +1,132 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "wavefile.h" +#include "wavebrowser.h" +#include "sentence.h" +#include "ifaceposersound.h" +#include "SoundEmitterSystem/isoundemittersystembase.h" +#include "snd_wave_source.h" +#include "filesystem.h" +#include "UtlBuffer.h" +#include "phonemeeditor.h" + +//----------------------------------------------------------------------------- +// Purpose: +// Input : *name - +//----------------------------------------------------------------------------- +CWaveFile::CWaveFile( char const *filename ) +{ + m_bAsyncLoading = false; + + m_bSentenceLoaded = false; + + m_Sentence.Reset(); + + Q_strncpy( m_szName, filename, sizeof( m_szName ) ); + + Q_snprintf( m_szFileName, sizeof( m_szFileName ), "sound/%s", filename ); +} + +CWaveFile::~CWaveFile() +{ +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : int +//----------------------------------------------------------------------------- +int CWaveFile::GetLanguageId() +{ + return GetCloseCaptionLanguageId(); +} + +bool SceneManager_LoadSentenceFromWavFile( char const *wavfile, CSentence& sentence ); + +void CWaveFile::EnsureSentence() +{ + if ( m_bSentenceLoaded ) + return; + + m_bSentenceLoaded = true; + + if ( m_szFileName[ 0 ] ) + { + SceneManager_LoadSentenceFromWavFile( m_szFileName, m_Sentence ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : Returns true on success, false on failure. +//----------------------------------------------------------------------------- +bool CWaveFile::HasLoadedSentenceInfo() const +{ + return m_bSentenceLoaded; +} + +char const *CWaveFile::GetName() const +{ + return m_szName; +} + +char const *CWaveFile::GetFileName() const +{ + return m_szFileName; +} + +char const *CWaveFile::GetSentenceText() +{ + EnsureSentence(); + return m_Sentence.GetText(); +} + +int CWaveFile::GetPhonemeCount() +{ + EnsureSentence(); + return m_Sentence.CountPhonemes(); +} + +int CWaveFile::GetWordCount() +{ + EnsureSentence(); + return m_Sentence.m_Words.Count(); +} + + +void CWaveFile::Play() +{ + Con_Printf( "Playing '%s' : '%s'\n", GetFileName(), GetSentenceText() ); + + g_pPhonemeEditor->SetCurrentWaveFile( GetFileName() ); + g_pPhonemeEditor->Play(); +} + + +bool CWaveFile::GetVoiceDuck() +{ + EnsureSentence(); + return m_Sentence.GetVoiceDuck(); +} + +int CWaveFile::GetIconIndex() const +{ + return 0; // IMAGE_WAV; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : sentence - +//----------------------------------------------------------------------------- +void CWaveFile::SetThreadLoadedSentence( CSentence& sentence ) +{ + if ( m_bSentenceLoaded ) + return; + + m_bSentenceLoaded = true; + m_Sentence = sentence; +}
\ No newline at end of file |