⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directsound.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			//角力 秦寸 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 + -