📄 directsound.cpp
字号:
//角力 秦寸 wav 拳老阑 敲饭捞矫虐绰单 巩力啊 绝绰瘤 眉农
if ( !WaveGetBuffers( g_SoundInfo.lpWaveData[ index ], &g_SoundInfo.lpDirectSoundBuffer[ index ], &g_SoundInfo.lpDirectSound3DBuffer[ index ] ) )
{
return FALSE;
}
}
}
//////////////////////// 0209 lkh 眠啊 ///////////////////////////
else //父距 static buffer 荤款靛牢 版快
{
if( g_SoundInfo.bInitialized == FALSE || g_SoundInfo.lpDirectSound == NULL ) return 0;
/*
if( g_SoundInfo.lpDirectSoundBuffer[ index ] == NULL ) //胶鸥平 滚欺俊 角力 荤款靛 单捞鸥 绝绰 版快
{
wsprintf( szFilePath, "%s/sound/%s", GetCurrentWorkingDirectory(), g_SoundList[index].sound_FileName);
//角力 wav 拳老阑 佬绢客 胶怕平 滚欺俊 肺爹
if ( WaveInit( &g_SoundInfo.lpWaveData[ index ], g_SoundInfo.lpDirectSound, szFilePath ) == FALSE )
{
return FALSE;
}
//角力 秦寸 wav 拳老阑 敲饭捞矫虐绰单 巩力啊 绝绰瘤 眉农
if ( !WaveGetBuffers( g_SoundInfo.lpWaveData[ index ], &g_SoundInfo.lpDirectSoundBuffer[ index ], &g_SoundInfo.lpDirectSound3DBuffer[ index ] ) )
{
return FALSE;
}
}
*/
}
PlayWave( index, x, y, flag );
return TRUE;
}
BOOL AdjustStaticSounds( int index, int volume, bool loop)
{
if ( g_SoundInfo.lpDirectSoundBuffer[ index ])
{
IDirectSoundBuffer_SetVolume( g_SoundInfo.lpDirectSoundBuffer[ index ], volume * 100 + DSBVOLUME_MIN );
}
if(loop)
PlayWave( index, 0, 0, 1 );
else
PlayWave( index, 0, 0, 0 );
return TRUE;
}
void AdjustSounds( int index, int volume, bool loop)
{
if( g_SoundInfo.bInitialized == FALSE || g_SoundInfo.lpDirectSound == NULL ) return;
if(index >= MAX_SOUND || index <= 0 ) return;
if(g_Volume_Off!=0) return;
BOOL result;
if( g_SoundList[index].static_Sound ) //static sound 牢 版快
result = AdjustStaticSounds( index, volume, loop);
else
result = AdjustAutoSounds( index, volume, loop);
////////////////// 0621 lkh test侩 /////////////////
// if(!result)
// {
// sprintf(error_message, "%d.wav拳老 敲饭捞 Error", index);
// MessageBox(NULL, error_message, 0, MB_OK);
// }
}
BOOL AdjustAutoSounds( int index, int volume, bool loop) //index->1~999鳖瘤
{
char szFilePath[ _MAX_PATH ];
if(!g_SoundList[index].static_Sound)
{
if( g_SoundInfo.bInitialized == FALSE || g_SoundInfo.lpDirectSound == NULL ) return 0;
///////////////////// 0508 lkh 眠啊 ///////////////////////
if( g_SoundInfo.lpDirectSoundBuffer[ index ] == NULL ) //胶鸥平 滚欺俊 角力 荤款靛 单捞鸥 绝绰 版快
{
wsprintf( szFilePath, "%s/sound/%s", GetCurrentWorkingDirectory(), g_SoundList[index].sound_FileName);
//角力 wav 拳老阑 佬绢客 胶怕平 滚欺俊 肺爹
if ( WaveInit( &g_SoundInfo.lpWaveData[ index ], g_SoundInfo.lpDirectSound, szFilePath ) == FALSE )
{
return FALSE;
}
//角力 秦寸 wav 拳老阑 敲饭捞矫虐绰单 巩力啊 绝绰瘤 眉农
if ( !WaveGetBuffers( g_SoundInfo.lpWaveData[ index ], &g_SoundInfo.lpDirectSoundBuffer[ index ], &g_SoundInfo.lpDirectSound3DBuffer[ index ] ) )
{
return FALSE;
}
}
/*
//////////////// 荤款靛 滚欺俊 捞固 肺爹登绢 乐绰 荤款靛牢 版快 犁肺爹窍瘤 臼档废 且巴 /////////////////////
if( g_SoundInfo.lpDirectSoundBuffer[ index ] == NULL )//!IsPlaying(index) )
{
wsprintf( szFilePath, "%s/sound/%s", GetCurrentWorkingDirectory(), g_SoundList[index].sound_FileName);
//角力 wav 拳老阑 佬绢客 胶怕平 滚欺俊 肺爹
if ( WaveInit( &g_SoundInfo.lpWaveData[ index ], g_SoundInfo.lpDirectSound, szFilePath ) == FALSE )
{
return FALSE;
}
//角力 秦寸 wav 拳老阑 敲饭捞矫虐绰单 巩力啊 绝绰瘤 眉农
if ( !WaveGetBuffers( g_SoundInfo.lpWaveData[ index ], &g_SoundInfo.lpDirectSoundBuffer[ index ], &g_SoundInfo.lpDirectSound3DBuffer[ index ] ) )
{
return FALSE;
}
}
*/
}
if ( g_SoundInfo.lpDirectSoundBuffer[ index ])
{
IDirectSoundBuffer_SetVolume( g_SoundInfo.lpDirectSoundBuffer[ index ], volume * 100 + DSBVOLUME_MIN );
}
if(loop)
PlayWave( index, 0, 0, 1 );
else
PlayWave( index, 0, 0, 0 );
return TRUE;
}
extern int SoundRangeX; // LTS SOUND
extern int SoundRangeY; // LTS SOUND
void
PlayWave( int index, int x, int y, BOOL flag )
{
if( index > MAX_SOUND || index < 0 ) return;
if ( g_SoundInfo.bInitialized )
{
if( g_SoundInfo.lpDirectSound3DBuffer[ index ] )
//if ( IDirectSound3DBuffer_SetPosition( g_SoundInfo.lpDirectSound3DBuffer[ index ], P2M( x * TILE_SIZE ), P2M( y * TILE_SIZE ), D3DVAL( 1 ), DS3D_DEFERRED ) == DS_OK )
if ( IDirectSound3DBuffer_SetPosition( g_SoundInfo.lpDirectSound3DBuffer[ index ], x/SoundRangeX,y/SoundRangeY/*P2M( x*3 ), P2M( y*3 )*/, D3DVAL( 0 ), DS3D_DEFERRED ) == DS_OK ) // LTS SOUND
{
if ( IDirectSoundBuffer_SetCurrentPosition( g_SoundInfo.lpDirectSoundBuffer[ index ], 0 ) == DS_OK )
{
if ( IDirectSound3DListener_CommitDeferredSettings( g_SoundInfo.lpDirectSound3DListener ) == DS_OK )
{
//父距 胶怕平 sound buffer俊 历厘登绢 乐绰 拳老牢 版快 滚欺俊辑 流立 Play矫虐哥, 角菩窍绰 版快 促矫 滚欺俊 佬绢 甸咯 Play
if ( IDirectSoundBuffer_Play( g_SoundInfo.lpDirectSoundBuffer[ index ], 0, 0, flag * DSBPLAY_LOOPING ) == DSERR_BUFFERLOST )
{
WaveReload( g_SoundInfo.lpWaveData[ index ] );
}
}
}
}
}
}
//021030 YGI
void
StopWave( int index )
{
if( index == SN_START )
{
StartSound(1);
return;
}
if( g_SoundInfo.lpDirectSoundBuffer[ index ] )
IDirectSoundBuffer_Stop( g_SoundInfo.lpDirectSoundBuffer[ index ] );
}
void
MoveWave( int index, int x, int y )
{
if( g_SoundInfo.lpDirectSound3DBuffer[ index ] )
IDirectSound3DBuffer_SetPosition( g_SoundInfo.lpDirectSound3DBuffer[ index ], P2M( x * TILE_SIZE/4 ), P2M( y * TILE_SIZE/4 ), D3DVAL( 1 ), DS3D_IMMEDIATE );
}
void SetVolumeOne( int index, int volume )
{
if ( g_SoundInfo.lpDirectSoundBuffer[ index ])
{
IDirectSoundBuffer_SetVolume( g_SoundInfo.lpDirectSoundBuffer[ index ], volume * 100 + DSBVOLUME_MIN );
}
}
// volume : 0 - 100
void //瓤苞澜 荤款靛 滚欺狼 杭俘 炼沥
SetVolume( int volume )
{
volume = 100 - (100 - volume)/5; // 0910 YGI
for ( int i = 0; i < MAX_SOUND; i++ )
{
if( i < SN_START || i > SN_BGMEND ) //硅版澜厩 滚欺甫 力寇茄 唱赣瘤 瓤苞澜 滚欺 杭俘 DOWN
{
if ( g_SoundInfo.lpDirectSoundBuffer[ i ] )
{
IDirectSoundBuffer_SetVolume( g_SoundInfo.lpDirectSoundBuffer[ i ], volume * 100 + DSBVOLUME_MIN );
}
}
}
}
void //硅版 澜厩狼 杭俘 炼沥(201->牢磐其捞胶~206牢傍带怜)
SetVolumeMusic( int volume )
{
volume = 100 - (100 - volume)/5; // 0910 YGI
//////////////////////// SoundUp lkh 荐沥 //////////////////////////
for ( int i = SN_START; i <= SN_BGMEND; i++)
{
if( g_SoundInfo.lpDirectSoundBuffer[i] )
IDirectSoundBuffer_SetVolume( g_SoundInfo.lpDirectSoundBuffer[ i ], volume * 100 + DSBVOLUME_MIN );
}
}
BOOL IsPlaying( int index ) //赴畔蔼捞 true->敲饭捞吝烙 / false->Not playing
{
DWORD dwStatus;
if ( g_SoundInfo.lpDirectSoundBuffer[ index ] == NULL ) //滚欺啊 厚绢 乐绰 版快(荤快靛 家胶啊 肺爹捞 救等 惑怕)
{
////////////////////// SoundUp lkh 荐沥 ////////////////////////
return FALSE;
}
if ( IDirectSoundBuffer_GetStatus( g_SoundInfo.lpDirectSoundBuffer[ index ], &dwStatus ) == DS_OK )
{
if ( dwStatus & DSBSTATUS_PLAYING )
{
return TRUE;
}
}
return FALSE;
}
//////////////// SoundUp lkh 荐沥 /////////////////
void CheckAutoWave( void )
{
for ( int i = 0; i<MAX_SOUND; i++ )
{
if( !g_SoundList[i].static_Sound ) //static sound啊 酒囱 版快
{
if ( g_SoundInfo.lpDirectSoundBuffer[ i ] != NULL )
{
if ( !IsPlaying( i ) )
{
FreeAutoSounds( i );
}
}
}
}
}
/*
short int g_Current_Volume //泅犁狼 荤款靛 杭俘
short int g_To_Volume //函券登绢具 窍绰 (弥辆利栏肺) 格钎 荤款靛 杭俘
short int g_Change_Volume //杭俘 荐摹 函券摹(-+ 函拳蔼->Fade Out/In)
*/
void VolumeTranslate()
{
if( g_Current_Volume == g_To_Volume)
{
g_Change_Volume=0;
return;
}
if(g_Change_Volume>0) //fade in(+)
{
if(g_Current_Volume < g_To_Volume)
{
g_Current_Volume += g_Change_Volume;
if(g_Current_Volume > g_To_Volume)
{
g_Current_Volume = g_To_Volume;
g_Change_Volume=0;
if(g_Current_Volume>100) g_Current_Volume=100;
}
}
}
else if(g_Change_Volume<0) //fade Out(-)
{
if(g_Current_Volume > g_To_Volume)
{
g_Current_Volume += g_Change_Volume;
if(g_Current_Volume < g_To_Volume)
{
g_Current_Volume = g_To_Volume;
g_Change_Volume=0;
if(g_Current_Volume<0) g_Current_Volume=0;
}
}
}
SetVolume( g_Current_Volume );
}
void VolumeSet(short int change_Volume, short int to_Volume)
{
if(change_Volume==0 || to_Volume==g_Current_Volume)
{
g_Change_Volume = 0;
return;
}
if(change_Volume>0 && (g_To_Volume<g_Current_Volume) ) //家府 杭俘 臭捞妨窍绰单 泅犁 杭俘捞 格钎杭俘焊促 歹 臭篮 版快
{
g_Change_Volume = 0;
return;
}
if(change_Volume<0 && (g_To_Volume>g_Current_Volume) ) //家府 杭俘 撤眠妨窍绰单 泅犁 杭俘捞 格钎杭俘焊促 歹 撤篮 版快
{
g_Change_Volume = 0;
return;
}
g_Change_Volume = change_Volume;
g_To_Volume = to_Volume;
}
static int old_Volume;
void WeatherFXSound(void) //RainAmount : 0 ~ 900
{
if( Statue_Weather==0 && IsPlaying(SOUND_RAINY)) //厚啊 坷瘤 臼绊 厚郴府绰 家府啊 敲饭捞 登绊 乐绰 版快
StopWave(SOUND_RAINY);
if( IsPlaying(SOUND_RAINY) )
{
//////////////////////// 玫嫡家府 楷免 ////////////////////////
if( rand()%(4700-RainAmount*5)==1 && !IsPlaying(SOUND_LIGHTNING1) )
{
if (rand()%10>5)
PlayListAutoSounds( SOUND_LIGHTNING1, rand()%100+100, rand()%100+50, 0 ); //3D sound肺 钎泅 // LTS SOUND
else
PlayListAutoSounds( SOUND_LIGHTNING1, (rand()%100+100)*-1, rand()%100+50, 0 ); //3D sound肺 钎泅
}
if( rand()%(4700-RainAmount*5)==1 && !IsPlaying(SOUND_LIGHTNING2) )
{
if (rand()%10>5) // LTS SOUND
PlayListAutoSounds( SOUND_LIGHTNING2, rand()%100+100, rand()%100+50, 0 ); //3D sound肺 钎泅
else
PlayListAutoSounds( SOUND_LIGHTNING2, (rand()%100+100)*-1, rand()%100+50, 0 ); //3D sound肺 钎泅
}
if(old_Volume!=RainAmount/16)
{
MoveWave( SOUND_RAINY, 0, 15-(RainAmount/60));
return;
}
else return;
}
switch(Statue_Weather)
{
case 1: //厚家府(& 涵遏家府鳖瘤 楷免)
PlayListAutoSounds( SOUND_RAINY, 0, 0/*15-(RainAmount/60)*/, 1 ); //3D sound肺 钎泅 // LTS SOUND
break;
case 2: //传棵锭 官恩家府
break;
}
old_Volume = RainAmount/16;
}
static int temp_Old_Volume;
void BGMFadeInOut(void) //硅版澜厩狼 fade in/out 贸府甫 困茄 窃荐
{
return;
/*
int fadeOut_Volume = 100-BGM_SoundVolume;
int fadeIn_Volume = BGM_SoundVolume;
if(BGM_FadeInOut)
{
int fadeOut_SoundNum = ReturnBGMNumber(OldMapNumber);
if(!fadeOut_SoundNum) fadeOut_SoundNum = 1;
if(fadeOut_Volume<=0)
{
StopWave( fadeOut_SoundNum );
OldMapNumber= MapNumber;
BGM_FadeInOut = 0;
}
if(fadeIn_Volume>=100)
BGM_SoundVolume=100;
if( IsPlaying( fadeOut_SoundNum) )
MoveWave( fadeOut_SoundNum, 0, 16-fadeOut_Volume/6 );
if( IsPlaying(ReturnBGMNumber(MapNumber)) )
MoveWave( ReturnBGMNumber(MapNumber), 0, 16-fadeIn_Volume/6 );
BGM_SoundVolume+=3;
}*/
}
void StartSound( int type ) // 檬扁 荤款靛 肛勉
{ //< CSD-030520
static int nCount;
if( type == 1 ) // 盖贸澜
{
nCount = 100;
}
if( nCount <= 0 ) return;
if( IsPlaying( 1) )
{
MoveWave( 1, 0, 16 - nCount/6 );
}
nCount -= 3;
if( nCount < 0 )
{
if( g_SoundInfo.lpDirectSoundBuffer[ 1 ] )
IDirectSoundBuffer_Stop( g_SoundInfo.lpDirectSoundBuffer[ 1 ] );
}
} //> CSD-030520
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -