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

📄 cbrewmedia.cpp

📁 Brew平台的手机游戏代码. 斗牛士.韩国开发的经典游戏.
💻 CPP
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////
// CBrewMedia.h
// By Levi's J
// 2004.03.12
///////////////////////////////////////////////////////////////////////////////////////////////////
//-Brew Media..
//-mp3, smaf, midi 殿殿
///////////////////////////////////////////////////////////////////////////////////////////////////



#include "CBrewMedia.h"



/*
/////////////////////////////////////////////////////////////
// operator new	: 春
void* CBrewMedia::operator new ( unsigned int size )
{
    return MALLOC(size);
}


/////////////////////////////////////////////////////////////
// operator delete	: 掉府飘
void CBrewMedia::operator delete ( void* ptr )
{
	if ( ptr )
	{
		FREE ( ptr );
		ptr		= NULL;
	}
}
*/




///////////////////////////////////////////////////////////
// CBrewMedia			: 积己磊 ( 檬扁拳 )
CBrewMedia::CBrewMedia()
{
	m_pIShell		= NULL;
	m_pIMedia		= NULL;
	buf				= NULL;
	
	m_bPlaying		= FALSE;

	m_bSound		= TRUE;
	m_bLoop			= FALSE;
	m_bWait			= FALSE;
}





///////////////////////////////////////////////////////////
// ~CBrewMedia	: 家戈磊 ( 皋葛府 副府令 )
CBrewMedia::~CBrewMedia ()
{
	Release();

	m_pIShell = NULL;
}



/////////////////////////////////////////////////////////////
// Release		: 副府令
void CBrewMedia::Release ()
{
	m_bPlaying		= FALSE;

	if( buf )
		ISHELL_FreeResData( m_pIShell, buf );

	buf	= NULL;

	if( m_pIMedia )
		IMEDIA_Release( m_pIMedia );

	m_pIMedia = NULL;
}

/////////////////////////////////////////////////////////////
// Init			: 檬扁拳
boolean CBrewMedia::Init ( IShell* _pIShell, AEECLSID _cid, const char* _filename, int16 nResID, int nVolume )
{
	uint32	size, offset;

	if(m_pIMedia)
		return FALSE;
	
	m_pIShell = _pIShell;
		
	if(ISHELL_CreateInstance ( m_pIShell, _cid, (void**)&m_pIMedia ) != SUCCESS)
		return FALSE;

	// 府家胶 农扁 何磐 掘绢 坷扁
	ISHELL_LoadResDataEx( m_pIShell, _filename, nResID, RESTYPE_IMAGE, (void*)-1, &size );
	
	// 府家胶 肺靛
	buf		= (byte*)ISHELL_LoadResData ( m_pIShell, _filename, nResID, RESTYPE_IMAGE );
	offset	= (uint32)buf[0];		// 府家胶 坷橇悸
	size	-= offset;
	
	// 滚欺 技泼
	m_pMediaData.clsData	= MMD_BUFFER;
	m_pMediaData.pData		= buf + offset;
	m_pMediaData.dwSize		= size;
	
	// 厘傈
	IMEDIA_SetMediaData( m_pIMedia, &m_pMediaData );
	
	if( IMEDIA_RegisterNotify( m_pIMedia, mediaNotify, this ) != SUCCESS )
		return FALSE;

	// 澜樊
	IMEDIA_SetVolume( m_pIMedia, nVolume );

	return TRUE;
}





/////////////////////////////////////////////////////////////
// Play			: 犁积 (府家胶), 府家胶 捞抚 快急 殿废
void CBrewMedia::Play ( boolean on, boolean loop )
{
	m_bSound		= on;
	m_bLoop			= loop;
	if ( !on )				// 波廉乐栏搁 角青 陛瘤
		return;

	if ( m_pIMedia )
	{
		if ( m_bPlaying )
		{
			IMEDIA_Stop ( m_pIMedia );
			m_bWait		= TRUE;
			//DBGPRINTF("Sound Stop");
		}
		else
		{
			m_bPlaying	= TRUE;
			IMEDIA_Play ( m_pIMedia );
			//DBGPRINTF("Sound Play");
		}		
	}
}






/////////////////////////////////////////////////////////////
// Stop			: 沥瘤!!
void CBrewMedia::Stop ()
{
	if ( m_bPlaying )
	{
		if(m_pIMedia)
		{
			IMEDIA_Stop ( m_pIMedia );
		}
		m_bPlaying	= FALSE;
	}
}

/*
void CBrewMedia::Sleep(int DeleyTime)
{
	int FirstTime=GET_UPTIMEMS();

	int SecondTime;
	while(1)
	{
		SecondTime=GET_UPTIMEMS();
		if((SecondTime-FirstTime)>=DeleyTime)
			break;
	}
}
*/

/////////////////////////////////////////////////////////////
// mediaNotify	: 妮归 舅覆 窃荐
void mediaNotify ( void* cxt, AEEMediaCmdNotify* pNotify )
{
	CBrewMedia*		pThis		= (CBrewMedia*)cxt;

	// 贸府
	if ( pNotify->nCmd == MM_CMD_PLAY )			// Play ()
	{ 
		switch ( pNotify->nStatus )
		{
			case MM_STATUS_START:				// 矫累~
				{
					pThis->m_bPlaying		= TRUE;
					//MEMSET ( pThis->m_sWaitName, 0, 256 );
				}
				break;
			case MM_STATUS_DONE:				// playback done (沥惑 场)
				{
					pThis->m_bPlaying		= FALSE;	// 犁积 吝 酒丛
					{
						if ( pThis->m_bLoop )		// 馆汗 犁积捞搁
							pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
						// 扁大扁绰 逞捞 乐栏搁
						else if ( pThis->m_bWait )
						{
							pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
							pThis->m_bWait	= FALSE;
						}
					}
				}
				break;
			case MM_STATUS_ABORT:				// playback aborted (碍力 场)
				{
					pThis->m_bPlaying		= FALSE;	// 犁积 吝 酒丛
					
					// 扁大扁绰 逞捞 乐栏搁
					if ( pThis->m_bWait )
					{
						pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
						pThis->m_bWait	= FALSE;
					}
				}
				break;
		}
	}
}

⌨️ 快捷键说明

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