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

📄 soundhelper.cpp

📁 游戏框架
💻 CPP
字号:
#include "StdAfx.h"
#include ".\soundhelper.h"

CSoundHelper::CSoundHelper(CResourceLib* pResourceLib)
{
	m_pResourceLib	= pResourceLib;
}

CSoundHelper::~CSoundHelper(void)
{
	StopAll();
}

// 播放
BOOL CSoundHelper::Play(_CString szName, int iLoop){

	CResource*	pResource = m_pResourceLib->GetResource(szName);
	// 判断是否声音资源及是否可加载
	if(pResource->IsSound() && pResource->GetStatus()!=0){
		// 资源暂时释放,则重新加载
		if(pResource->GetStatus()==2)
			pResource->ReLoad();

		switch(pResource->GetType()){
			case Resource_Music:
				m_pResourceLib->m_lpGDI->Music_Play(pResource->GetResourcePoint(), iLoop<1);
				break;
			case Resource_Stream:
				m_pResourceLib->m_lpGDI->Stream_Play(pResource->GetResourcePoint(), iLoop<1);
				break;
			case Resource_Effect:
				m_pResourceLib->m_lpGDI->Effect_PlayEx(pResource->GetResourcePoint(), m_iVolume, m_iPanning, 1.0, iLoop<1);
				break;
		}
		return true;
	}

	return false;
}

// 停止
BOOL CSoundHelper::Stop(_CString szName){
	CResource*	pResource = (*m_pResourceLib)[szName];
	// 判断是否声音资源并且已加载
	if(pResource->IsSound() && pResource->GetStatus()==1){
		return pResource->Free();
	}
	return false;
}

// 暂停
BOOL CSoundHelper::Pause(_CString szName){
	return false;
}

// 恢复
BOOL CSoundHelper::Resume(_CString szName){
	return Play(szName);;
}

// 设置当前播放位置
void CSoundHelper::SetPosition(_CString szName, float fPos){
	CResource*	pResource = (*m_pResourceLib)[szName];
	// 判断是否声音资源并且已加载
	if(pResource->GetType()==Resource_Music && pResource->GetStatus()==1){
		// 新版HGE才支持(1.7以上)
		//m_pResourceLib->m_lpGDI->Music_SetPos(pResource->GetResourcePoint(), 1, 1);
	}
}

// 返回当前播放位置
float CSoundHelper::GetPosition(_CString szName){
	CResource*	pResource = (*m_pResourceLib)[szName];
	// 判断是否声音资源并且已加载
	if(pResource->GetType()==Resource_Music && pResource->GetStatus()==1){
		// 新版HGE才支持(1.7以上)
		//m_pResourceLib->m_lpGDI->Music_GetPos(pResource->GetResourcePoint(), 1, 1);
	}
	return 0;
}

// 设置声音大小
void CSoundHelper::SetVolume(_CString szName, WORD wVolume){
	m_iVolume = wVolume;
}

// 返回声音大小 
int CSoundHelper::GetVolume(_CString szName){
	return 0;
}

// 设置左右平衡
void CSoundHelper::SetPanning(int iPanning){
	m_iPanning = iPanning;
}

// 返回左右平衡
int CSoundHelper::GetPanning(){
	return 0;
}

// 停止所有
BOOL CSoundHelper::StopAll(){
	CResource*	pResource = m_pResourceLib->m_lstResourcs.Iterators(true);
	while(pResource){
		if(pResource->IsSound())
			pResource->Free();
		pResource = m_pResourceLib->m_lstResourcs.Iterators();
	}
	return true;
}

// 恢复所有
BOOL CSoundHelper::ResumeAll(){
	CResource*	pResource = m_pResourceLib->m_lstResourcs.Iterators(true);
	while(pResource){

		pResource = m_pResourceLib->m_lstResourcs.Iterators();
	}
	return true;
}

⌨️ 快捷键说明

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