source-engine/utils/hlfaceposer/wavefile.cpp

132 lines
2.8 KiB
C++
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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;
}