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

📄 mirsound.cpp

📁 好游戏的客户端原码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::Enable3D(VOID)
{
	m_3DEnable = TRUE;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
INT CMirSound::CalsDirection(POINT Src,POINT Chr)
{
	return Src.x>Chr.x ? 1 :Src.x<Chr.x ?-1:0;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
BOOL CMirSound::FreeNotUseBuffer(VOID)
{
	DWORD	dwCurrentTime;
	DWORD	dwTempTime;
	CSBuffer*	pxTempBuffer;
	int i=0;

	dwCurrentTime = timeGetTime();		// 泅犁 矫埃阑 备茄促.

	do
	{
		dwTempTime = m_ppBuffer[i]->GetLastUsedTime();
		if(dwTempTime!=0)
		{
			dwTempTime = dwCurrentTime - dwTempTime;
			if(dwTempTime >  MAX_LIM_TIME)	// 1盒 捞惑 救敬巴阑 朝妨扼
			{	
				m_ppBuffer[i]->Release();
				pxTempBuffer = m_ppBuffer[i];
				m_nUseCount--;
				for(int j = i; j<m_nUseCount;j++)
				{
					m_ppBuffer[j] = m_ppBuffer[j+1];
				}
				m_ppBuffer[m_nUseCount] = pxTempBuffer;
				i--;
			}
			i++;
		}
	}
	while(i<m_nUseCount);
	return FALSE;
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetEnableBGM(VOID)
{
	m_bBGMPlay = TRUE;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetDisableBGM(VOID)
{
	m_bBGMPlay = FALSE;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetEnablePlay(VOID)
{
	m_bPlay = TRUE;
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetDisablePlay(VOID)
{
	m_bPlay = FALSE;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetDisableAmbiance(VOID)
{
	if(m_bAmbiance)
	{
		m_bAmbiance = FALSE;
		for(INT i = 0 ; i < MAX_AMBIANCE_COUNT ; i++)
		{
			m_pAmbianceBuffer[i]->Release();
			delete m_pAmbianceBuffer[i];
		}

//		m_CommonWavBuffer.Release();
		if(m_CommonWavBuffer.Load(m_pSound,"10.wav",1)!=E_FAIL)
		{
			m_CommonWavBuffer.m_ID = 1;
			m_CommonWavBuffer.SetVolume(m_lWavMaxVol);
			m_CommonWavBuffer.Play(0);
		}
		KillTimer(g_xMainWnd.GetSafehWnd(),ID_AMBIANCE_TIMER);
	}
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetEnableAmbiance(INT nMapNum,INT nCount)
{
	CHAR	szPname[MAX_PATH];
	CHAR	szFname[MAX_PATH];
	CHAR	szTname[MAX_PATH];
	if(!m_bAmbiance)
	{
		m_nAmbienceNum = nMapNum;
		m_nAmbianceCount = nCount;
//		_itoa(m_nAmbienceNum,szFname,10);
		ZeroMemory(szPname,MAX_PATH);
//		strcat(szPname,szFname);
		if(m_CommonWavBuffer.Load(m_pSound,"00.wav",1)!=E_FAIL)		// FadeIn
		{
			m_CommonWavBuffer.SetVolume(m_lWavMaxVol);
			m_CommonWavBuffer.m_ID = 1;			// 骏厚攫胶老版快俊父 1肺 秦霖促.
			m_CommonWavBuffer.Play(0);
		}

		for(INT i = 0 ; i < MAX_AMBIANCE_COUNT ; i++)
		{
			_itoa(i,szTname,10);
			strcat(szTname,".wav");
			strcpy(szFname,szPname);
			strcat(szFname,szTname);
			m_pAmbianceBuffer[i] = new CSBuffer;
			if(m_3DEnable)	m_pAmbianceBuffer[i]->Enable3d();
			m_pAmbianceBuffer[i]->Load(m_pSound,szFname,2);
			m_pAmbianceBuffer[i]->m_ID = 1;		// 骏厚攫胶老版快俊父 1肺 秦霖促.
		}
		m_bAmbiance = TRUE;
		SetTimer(m_hWnd,ID_AMBIANCE_TIMER,1000,(TIMERPROC)(AmbianceTimerProc));
	}
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
BOOL CMirSound::BGMFadeIn(LONG	lMaxVol)
{
	if(!m_bRunningTimer)
	{
		if(m_pMp3->IsPlaying())
		{
			m_lMp3MaxVol = lMaxVol;
			SetTimer(m_hWnd,ID_TIMER_1,100,(TIMERPROC)(FadeInTimerProc));
			m_bRunningTimer = TRUE;
			return TRUE;
		}
	}
	return FALSE;
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
BOOL CMirSound::BGMFadeOut(LONG lTime,LONG	lMinVol)
{
	if(!m_bRunningTimer)
	{
		if(m_pMp3->IsPlaying())
		{
			lTime = (lTime*2)/100;
			m_lMp3MaxVol = lMinVol;
			SetTimer(m_hWnd,ID_TIMER_1,lTime,(TIMERPROC)(FadeOutTimerProc));
			m_bRunningTimer = TRUE;
			return TRUE;
		}
	}
	return FALSE;
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
HRESULT CMirSound::MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
		case WM_DSHOW_NOTIFY:
			{
				m_pMp3->MessageProcess();
				break;
			}
	}
	return 0l;
}




///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::EndFading(INT nState)
{
	if(nState==0)
	{
		// End of Fade in
		KillTimer(g_xMainWnd.GetSafehWnd(),ID_TIMER_1);
		//
		
	}
	else
	{
		// End of Fade out
		if(m_lMp3MaxVol<=(-5000)) m_pMp3->OnStop();
		KillTimer(g_xMainWnd.GetSafehWnd(),ID_TIMER_1);
		//
	}
	m_bRunningTimer = FALSE;
}




///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetInWarMode(VOID)
{
	if(!m_bIsWarMode)
	{
		m_lMp3MaxVol =(-2000);
		BGMFadeOut(m_lMp3MaxVol);
		m_bIsWarMode = TRUE;
	}
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
VOID CMirSound::SetInPeaceMode(VOID)
{
	if(m_bIsWarMode)
	{
		m_lMp3MaxVol =(0);
		BGMFadeIn(m_lMp3MaxVol);
		m_bIsWarMode = FALSE;
	}
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
// MAX = 100 Min = 1
BOOL CMirSound::SetMasterVol(INT nVolume)
{
	if(nVolume>=1 && nVolume<=100)
	{
		m_lWavMaxVol = (nVolume-101)*(50);		// 100 -> -50    0 -> -5000
		m_lMp3MaxVol = (m_lWavMaxVol-1)*(10);		// Wav volume狼 -10db
		return TRUE;
	}
	return FALSE;
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
// MAX = 100 Min = 1
BOOL CMirSound::SetBGMVol(INT nVolume)
{
	if(nVolume>=0 && nVolume<=100)
	{
		m_lMp3MaxVol = (m_lWavMaxVol-1)*(10)*(nVolume+1);		// Wav volume狼 -10dB狼 割%?
		return TRUE;
	}
	return FALSE;
}


///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
BOOL CMirSound::SetWavVol(INT nVolume)
{
	return SetMasterVol(nVolume);
}



///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
void CALLBACK FadeInTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
	LONG	lVolume;
	lVolume = g_xSound.m_pMp3->GetVolume();
	// if End of Fade-out SendMessage to Window WM_USER_ENDTIMER
	if(lVolume>=(g_xSound.m_lMp3MaxVol))
		SendMessage(g_xMainWnd.GetSafehWnd(),WM_USER_ENDTIMER,(WPARAM)0,NULL);
	lVolume = lVolume + 100;
	g_xSound.m_pMp3->SetVolume(lVolume);
}

///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
void CALLBACK FadeOutTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime )
{
	LONG	lVolume;
	lVolume = g_xSound.m_pMp3->GetVolume();
	// if End of Fade-out SendMessage to Window WM_USER_ENDTIMER
	if(lVolume<(g_xSound.m_lMp3MaxVol))
		SendMessage(g_xMainWnd.GetSafehWnd(),WM_USER_ENDTIMER,(WPARAM)1,NULL);
	lVolume = lVolume - 100;
	g_xSound.m_pMp3->SetVolume(lVolume);
}




///////////////////////////////////////////////////////////////////////
//  Name		:	
//  Destination :	
//
//  Parameter	:	
//
//	Return Value:	
//  Update		:
///////////////////////////////////////////////////////////////////////
void CALLBACK AmbianceTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime )
{
	static	INT nCount = 11;
	static	INT	nReply = 0;
	INT nNum;
	INT	Fact_1,Fact_2;
	Fact_1 = (rand())%10+1;
	Fact_2 = (rand())%10+1;

	nCount++;
	
	if((Fact_1+Fact_2)<=6)  // 15%捞惑狼 犬伏肺 Play   1~15% = 15%
		nNum = 1;
	else
		if((Fact_1+Fact_2)<=8)  // 28%捞惑狼 犬伏肺 Play  16~28% = 12%
			nNum = 2;
		else
			if((Fact_1+Fact_2)<=10)  // 45%捞惑狼 犬伏肺 Play   27~45%  = 18%
				nNum = 3;
			else
				if((Fact_1+Fact_2)<=11)  // 55%捞惑狼 犬伏肺 Play   46~55% = 10%
					nNum = 4;
				else
					if((Fact_1+Fact_2)<=13)  // 72%捞惑狼 犬伏肺 Play  56~72% = 16%
						nNum = 5;
					else
						if((Fact_1+Fact_2)<=16)  // 90%捞惑狼 犬伏肺 Play	72~90 = 18%
							nNum = 7;
						else
							nNum = 8;			 //	10%

	if(nCount>=13)
	{
		nNum = 0;
		nCount = 0;
		nReply++;
	}
	if(nNum >= 0 && nNum <= 8)
	{
		g_xSound.PlayAmbianceWav(nNum);		// 盔贰
	}
	if(nReply>=g_xSound.m_nAmbianceCount)
	{
		nReply = 0;
		g_xSound.SetDisableAmbiance();
		return;
	}
}

BOOL CMirSound::ChgPlayingSet(INT nWavIdx,INT nBufferIdx,INT Sx,INT Sy,INT Dx,INT Dy)
{
	POINT	Mon,Chr;
	INT Dis;
	INT Dir;
	CSBuffer*	pBuffer;
	MAKEPOS(Mon,Sx,Sy);
	MAKEPOS(Chr,Dx,Sy);

	pBuffer= FindBuffer(nWavIdx,FALSE);
	if(pBuffer!=NULL)
	{
		Dis = CalsDistance(Mon,Chr);
		Dir = CalsDirection(Mon,Chr);
		pBuffer->Pause(nBufferIdx);
		pBuffer->SetPan(nBufferIdx,CalsPan(Dir,Dis));
		pBuffer->SetVolume(nBufferIdx,CalsVolume(Dis));
		pBuffer->Continue(nBufferIdx);
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -