📄 cguimanager.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 + -