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

📄 cguimanager.cpp

📁 我在资源网上发布的一个brickshorterjr的代码
💻 CPP
字号:
#include    "CGUIManager.h"


CGUIManager::CGUIManager( hgeResourceManager *resMgr , CSound *sound )
{
	m_resMgr  =  resMgr;
	m_guiMgr  =  NULL;
	m_sound = sound;

	m_newGame  =  NULL;
	m_highScore  =  NULL;
	m_options  =  NULL;
	m_help  =  NULL;
	m_rotate[0]  =  NULL;
	m_rotate[1]  =  NULL;	
	m_undo      =  NULL;
	m_saveGame  =  NULL;
	m_readGame  =  NULL;
	m_exitGame  =  NULL;

	m_helpDlg[0] = NULL;
	m_helpDlg[1] = NULL;
	m_optionDlg  = NULL;
}

bool	CGUIManager::Init()
{
	m_guiMgr	=	new	hgeGUI();
	
	m_newGame	=	new	hgeGUIButtonEx( GUI_NEWGAME, 629, 80, 128, 128, 
		m_resMgr->GetSprite( "newGameMouseOn" ), 
		m_resMgr->GetSprite( "newGameMouseOff" ) );
	
	m_highScore	=	new	hgeGUIButtonEx( GUI_HIGHSCORE, 629, 208, 128, 128,
		m_resMgr->GetSprite( "highScoreMouseOn" ), 
		m_resMgr->GetSprite( "highScoreMouseOff" ) );
	
	m_options	=	new	hgeGUIButtonEx( GUI_OPTION, 629, 336, 128, 128,
		m_resMgr->GetSprite( "optionMouseOn" ), 
		m_resMgr->GetSprite( "optionMouseOff" ) );
	
	m_help		=	new	hgeGUIButtonEx( GUI_HELP, 629, 464, 128, 128,
		m_resMgr->GetSprite( "helpMouseOn" ), 
		m_resMgr->GetSprite( "helpMouseOff" ) );
	
	m_saveGame	=	new	hgeGUIButtonEx( GUI_SAVEGAME, 599, 4, 64, 64,
		m_resMgr->GetSprite( "saveGameMouseOn" ), 
		m_resMgr->GetSprite( "saveGameMouseOff" ) );
	
	m_readGame	=	new	hgeGUIButtonEx( GUI_READGAME, 665, 4, 64, 64,
		m_resMgr->GetSprite( "readGameMouseOn" ), 
		m_resMgr->GetSprite( "readGameMouseOff" ) );
	
	m_exitGame	=	new	hgeGUIButtonEx( GUI_EXITGAME, 733, 4, 64, 64,
		m_resMgr->GetSprite( "exitGameMouseOn" ), 
		m_resMgr->GetSprite( "exitGameMouseOff" ) );
	
	m_rotate[0]	=	new	hgeGUIButtonEx( GUI_ROTATE1, 30, 474, 90, 90,
		m_resMgr->GetSprite( "rotate1MouseOn" ),
		m_resMgr->GetSprite( "rotate1MouseOff" ) );
	m_rotate[0]->Enable( true, m_resMgr->GetSprite( "rotate1Disable" ) );
	
	m_rotate[1]	=	new	hgeGUIButtonEx( GUI_ROTATE2, 483, 474, 90, 90,
		m_resMgr->GetSprite( "rotate2MouseOn" ),
		m_resMgr->GetSprite( "rotate2MouseOff" ) );
	m_rotate[1]->Enable( true, m_resMgr->GetSprite( "rotate2Disable" ) );
	
	m_undo		=	new	hgeGUIButtonEx( GUI_UNDO, 475, 39, 85, 90,
		m_resMgr->GetSprite( "undoMouseOn" ), 
		m_resMgr->GetSprite( "undoMouseOff" ) );

	m_helpDlg[0]=	new	CBSDialog( GUI_HELPDLG1, 100, 100, 483, 395,
								   341, 323, 137, 63, m_resMgr->GetSprite( "helpDlg0" ) );
	m_helpDlg[1]=	new	CBSDialog( GUI_HELPDLG2, 100, 100, 483, 395,
								   341, 323, 137, 63, m_resMgr->GetSprite( "helpDlg1" ) );
	
	m_optionDlg	=	new	CBSOptionDlg( GUI_OPTIONDLG, 100, 100, 483, 395,
									  341, 323, 137, 63, m_resMgr->GetSprite( "optionDlg" ),
									  m_resMgr->GetSprite( "okSign" ) );
	
	COptionData *option  =  new COptionData;
	option->m_bArrowChanger = 0;
	option->m_bBomb = 0;
	option->m_bFullscreen = 0;
	option->m_bMusic = 0;
	option->m_bSound = 0;
	option->m_bUniversal = 1;
	//memset(&option,0,sizeof(option));	
	
	m_optionDlg->Init( m_sound, option );//i hate this code..it make my codes dirty!!!
	
	//-----------------------help dialogs can open url------------------------------------
	m_helpDlg[0]->EnableURL( true );
	m_helpDlg[1]->EnableURL( true );
		
	m_guiMgr->AddCtrl( m_newGame );
	m_guiMgr->AddCtrl( m_highScore );
	m_guiMgr->AddCtrl( m_options );
	m_guiMgr->AddCtrl( m_help );
	
	m_guiMgr->AddCtrl( m_undo );
	m_guiMgr->AddCtrl( m_saveGame );
	m_guiMgr->AddCtrl( m_readGame );
	m_guiMgr->AddCtrl( m_exitGame );

	m_guiMgr->AddCtrl( m_rotate[0] );
	m_guiMgr->AddCtrl( m_rotate[1] );
	
	for( int i = 0; i < 2; i++ )
	{
		m_helpDlg[i]->EnableDlg( false );
		m_helpDlg[i]->ShowDlg( false );
		m_guiMgr->AddCtrl( m_helpDlg[i] );
	}

	m_optionDlg->EnableDlg( false );
	m_optionDlg->ShowDlg( false );
	m_guiMgr->AddCtrl( m_optionDlg );

	return true;
}

void	CGUIManager::Release()
{
	SAFE_DELETE( m_guiMgr );
}

e_GUIId	CGUIManager::Update( float dt)
{
	int id = m_guiMgr->Update( dt );
	
	switch( id )
	{
	case GUI_HELP:
		//show the help dialog1
		m_helpDlg[0]->EnableDlg( true );
		m_helpDlg[0]->ShowDlg( true );
		
		//disable all controls
		//EnableAll( false );
		break;
		
	case GUI_HELPDLG1:
		//show the helo dialog 2
		m_helpDlg[0]->EnableDlg( false );
		m_helpDlg[0]->ShowDlg( false );
		m_helpDlg[1]->EnableDlg( true );
		m_helpDlg[1]->ShowDlg( true );
		break;
		
	case GUI_HELPDLG2:
		//hide all the help dialogs
		m_helpDlg[1]->EnableDlg( false );
		m_helpDlg[1]->ShowDlg( false );
		break;
		
	case GUI_UNDO:
		//m_undo->Enable( false, m_resMgr->GetSprite( "undoMouseOff" ) );
		break;
		
	case GUI_ROTATE1:
		//m_rotate[0]->Enable( false, m_resMgr->GetSprite( "rotate1Disable" ) );
		//m_rotate[1]->Enable( false, m_resMgr->GetSprite( "rotate2Disable" ) );
		break;
		
	case GUI_ROTATE2:
		//m_rotate[0]->Enable( false, m_resMgr->GetSprite( "rotate1Disable" ) );
		//m_rotate[1]->Enable( false, m_resMgr->GetSprite( "rotate2Disable" ) );
		break;
		
	case GUI_OPTIONDLG:
		m_optionDlg->EnableDlg( false );
		m_optionDlg->ShowDlg( false );
		//EnableAll( true );
		break;

	case GUI_OPTION:
		m_optionDlg->EnableDlg( true );
		m_optionDlg->ShowDlg( true );
		break;
	}
	return (e_GUIId)id;
}

void	CGUIManager::Render()
{
	m_guiMgr->Render();	
}

⌨️ 快捷键说明

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