OpenBarnyard
 
Loading...
Searching...
No Matches
AWaveBankFMODFSBStream Class Reference

#include <AWaveBankFMODFSBStream.h>

Inheritance diagram for AWaveBankFMODFSBStream:
AWaveBank

Public Member Functions

 AWaveBankFMODFSBStream (const Toshi::TPString8 &a_strBank, const Toshi::TPString8 &a_strPath)
 
virtual TBOOL IsReady () const OVERRIDE
 
virtual LOADRESULT Load (LOADFLAGS a_uiFlags, TINT a_iBufferSize) OVERRIDE
 
virtual UNLOADRESULT Unload () OVERRIDE
 
- Public Member Functions inherited from AWaveBank
 AWaveBank (const Toshi::TPString8 &a_strBank, const Toshi::TPString8 &a_strPath, TBOOL a_bSetFrequency)
 
virtual AWaveSampleHandle GetWaveSample (TINT a_iWaveIndex, TINT a_iUnused) const
 
virtual void ResetWave (TINT a_iWaveIndex)
 
virtual ~AWaveBank ()
 
AWaveGetWave (TINT a_iWaveIndex)
 
TINT GetWaveId (TINT a_iWaveIndex)
 
TINT GetWaveFrequency (TINT a_iWaveIndex)
 
AWaveSampleHandle CreateWaveSample (TINT a_iWaveIndex, TINT a_iUnused)
 
void SetWaveFlag1 (TINT a_iWaveIndex)
 
void SetWaveFlag2 (TINT a_iWaveIndex)
 
void ParseWavesData (const PBProperties *a_pBankProperties, TUINT a_uiForcedFlags)
 

Additional Inherited Members

- Public Types inherited from AWaveBank
enum  LOADFLAGS_ : LOADFLAGS { LOADFLAGS_NONE = 0 , LOADFLAGS_LOCALISE = BITFLAG( 0 ) }
 
enum  LOADRESULT { LOADRESULT_ERR = -1 , LOADRESULT_OK = 0 }
 
enum  UNLOADRESULT { UNLOADRESULT_OK = 0 }
 
using LOADFLAGS = TUINT32
 
- Protected Attributes inherited from AWaveBank
TINT m_iNumWaves
 
TINT m_iNumLoads
 
Toshi::TPString8 m_strBank
 
Toshi::TPString8 m_strPath
 
Toshi::TPString8 m_strExtension
 
TBOOL m_bSetFrequency
 
AWavem_pWaves
 
AWaveBankFileHandle m_FileHandle
 

Detailed Description

Definition at line 4 of file AWaveBankFMODFSBStream.h.

Constructor & Destructor Documentation

◆ AWaveBankFMODFSBStream()

AWaveBankFMODFSBStream::AWaveBankFMODFSBStream ( const Toshi::TPString8 & a_strBank,
const Toshi::TPString8 & a_strPath )

Definition at line 18 of file AWaveBankFMODFSBStream.cpp.

19 : AWaveBank( a_strBank, a_strPath, TTRUE )
20{
21}
#define TTRUE
Definition Typedefs.h:25
AWaveBank(const Toshi::TPString8 &a_strBank, const Toshi::TPString8 &a_strPath, TBOOL a_bSetFrequency)
Definition AWaveBank.cpp:17

Member Function Documentation

◆ IsReady()

TBOOL AWaveBankFMODFSBStream::IsReady ( ) const
virtual

Implements AWaveBank.

Definition at line 23 of file AWaveBankFMODFSBStream.cpp.

24{
25 return FSOUND_Stream_GetOpenState( (FSOUND_STREAM*)m_FileHandle ) == 0;
26}
AWaveBankFileHandle m_FileHandle
Definition AWaveBank.h:61

◆ Load()

AWaveBank::LOADRESULT AWaveBankFMODFSBStream::Load ( LOADFLAGS a_uiFlags,
TINT a_iBufferSize )
virtual

Implements AWaveBank.

Definition at line 28 of file AWaveBankFMODFSBStream.cpp.

29{
30 if ( m_iNumLoads > 0 || m_FileHandle != TNULL )
31 {
33 return LOADRESULT_OK;
34 }
35
36 TString8 strFileName;
38 strFileName += "FSB/";
39
40 strFileName += m_strPath.GetString8();
41 strFileName += ".";
42 strFileName += "fsb";
43
44 TFileManager* pFileManager = TFileManager::GetSingleton();
45
46 TNativeFileInfo oFileInfo;
47 TBOOL bGotFileInfo = pFileManager->GetFileInfo( strFileName, oFileInfo );
48
49 TASSERT( TTRUE == bGotFileInfo );
50
51 TINT iBufferSize = ( a_iBufferSize <= 0 ) ? 2000 : a_iBufferSize;
52 FSOUND_Stream_SetBufferSize( TINT( iBufferSize ) );
53
54 // Open the FSB stream
55 TUINT uiStreamOpenMode =
56 ( FSOUND_NONBLOCKING | FSOUND_SIGNED | FSOUND_MONO | FSOUND_16BITS ) |
57 ( ( m_pWaves->iFlags & 2 ) ? FSOUND_HW3D : FSOUND_HW2D );
58
59 FSOUND_STREAM* pStream = FSOUND_Stream_Open( oFileInfo.InternalPath, uiStreamOpenMode, oFileInfo.Offset, oFileInfo.Length );
60 TVALIDPTR( pStream );
61
62 if ( pStream != TNULL )
63 {
64 // Update ALoadScreen if neccessary
66 {
67 TINT iOpenState = FSOUND_Stream_GetOpenState( pStream );
68 while ( iOpenState == -2 )
69 {
71#ifndef BARNYARD_COMMUNITY_PATCH
72 ThreadSleep( 5 );
73#endif // BARNYARD_COMMUNITY_PATCH
74 iOpenState = FSOUND_Stream_GetOpenState( pStream );
75 }
76 }
77
78 // Store info about the samples
79
80 m_iNumLoads += 1;
81 m_FileHandle = pStream;
82
83 for ( TINT i = 0; i < m_iNumWaves; i++ )
84 {
85 AWave* pWave = &m_pWaves[ i ];
86 pWave->iIndex = i;
87 pWave->pSampleHandle = pStream;
88 pWave->iFlags |= ( 4 | 8 );
89 }
90
91 return LOADRESULT_OK;
92 }
93
94 return LOADRESULT_ERR;
95}
#define TASSERT(X,...)
Definition Defines.h:138
#define TVALIDPTR(PTR)
Definition Defines.h:139
unsigned int TUINT
Definition Typedefs.h:8
#define TNULL
Definition Typedefs.h:23
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
ALoadScreen g_oLoadScreen
void ThreadSleep(TUINT dwMilliseconds)
TString8 InternalPath
Definition TFile.h:54
TUINT32 Length
Definition TFile.h:56
TUINT32 Offset
Definition TFile.h:55
TBOOL GetFileInfo(const TString8 &a_strPath, TNativeFileInfo &a_rNativeInfo)
static TFORCEINLINE TFileManager * GetSingleton()
Definition TSingleton.h:49
void Update(TFLOAT a_fDeltaTime=1.0f, TBOOL a_bRender=true)
static constexpr const TCHAR * SOUNDS_BASE_DIRECTORY
static TBOOL ms_bShouldUpdateLoadingScreen
AWaveSampleHandle pSampleHandle
Definition AWave.h:18
TINT iIndex
Definition AWave.h:19
TINT iFlags
Definition AWave.h:15
AWave * m_pWaves
Definition AWaveBank.h:60
TINT m_iNumWaves
Definition AWaveBank.h:54
Toshi::TPString8 m_strPath
Definition AWaveBank.h:57
@ LOADRESULT_OK
Definition AWaveBank.h:23
@ LOADRESULT_ERR
Definition AWaveBank.h:22
TINT m_iNumLoads
Definition AWaveBank.h:55

◆ Unload()

AWaveBank::UNLOADRESULT AWaveBankFMODFSBStream::Unload ( )
virtual

Implements AWaveBank.

Definition at line 97 of file AWaveBankFMODFSBStream.cpp.

98{
99 if ( m_iNumLoads != 0 && --m_iNumLoads < 1 && m_FileHandle )
100 {
101 m_iNumLoads = 0;
102
103 FSOUND_STREAM* pStream = (FSOUND_STREAM*)m_FileHandle;
104
105 TINT iOpenState = FSOUND_Stream_GetOpenState( pStream );
106 while ( iOpenState == -2 )
107 {
108#ifndef BARNYARD_COMMUNITY_PATCH
109 ThreadSleep( 5 );
110#endif // BARNYARD_COMMUNITY_PATCH
111 iOpenState = FSOUND_Stream_GetOpenState( pStream );
112 }
113
114 FSOUND_Stream_Close( pStream );
115
116 // Reset the waves
117 for ( TINT i = 0; i < m_iNumWaves; i++ )
118 {
119 AWave* pWave = &m_pWaves[ i ];
120 pWave->pSampleHandle = TNULL;
121 pWave->iIndex = -1;
122 pWave->iFlags &= ~( 4 | 8 );
123 }
124
126 }
127
128 return UNLOADRESULT_OK;
129}
@ UNLOADRESULT_OK
Definition AWaveBank.h:28

The documentation for this class was generated from the following files: