You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.8 KiB
132 lines
2.8 KiB
//========= 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;
|
|
}
|