/*========================================================================= options.cpp Author: PKG Created: Project: Spongebob Purpose: Copyright (c) 2000 Climax Development Ltd ===========================================================================*/ /*---------------------------------------------------------------------- Includes -------- */ #include "frontend\options.h" #ifndef __MEMORY_HEADER__ #include "mem\memory.h" #endif #ifndef __GFX_FADER_H__ #include "gfx\fader.h" #endif #ifndef __FRONTEND_SCROLLBG_H__ #include "frontend\scrollbg.h" #endif #ifndef __PRIM_HEADER__ #include "gfx\prim.h" #endif #ifndef __GUI_GFACTORY_H__ #include "gui\gfactory.h" #endif #ifndef __GUI_GFRAME_H__ #include "gui\gframe.h" #endif #ifndef __GUI_GREADOUT_H__ #include "gui\greadout.h" #endif #ifndef __LOCALE_TEXTDBASE_H__ #include "locale\textdbase.h" #endif #ifndef __SOUND_SOUND_H__ #include "sound\sound.h" #endif /* Std Lib ------- */ /* Data ---- */ #ifndef __SPR_FRONTEND_H__ #include #endif /*---------------------------------------------------------------------- Tyepdefs && Defines ------------------- */ /*---------------------------------------------------------------------- Structure defintions -------------------- */ /*---------------------------------------------------------------------- Function Prototypes ------------------- */ /*---------------------------------------------------------------------- Vars ---- */ int s_controlButtonData[]= { 0,1,2,3, -1 }; CGUITextReadout::TextReadoutData s_controlReadoutText[]= { { 0,STR__FRONTEND__A }, { 1,STR__FRONTEND__B }, { 2,STR__FRONTEND__C }, { 3,STR__FRONTEND__D }, }; /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ void CFrontEndOptions::init() { int i; m_background=new ("Options Background") CScrollyBackground(); m_background->init(); // Create the menu frames for(i=0;iinit(NULL); (*mm)->setObjectXYWH(50,40,412,176); } // Populate OPTIONS menu CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS], X_BORDER,Y_BORDER,412-(X_BORDER*2),20, STR__FRONTEND__CONTROLS, &m_nextMode,MODE__CONTROL); CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS], X_BORDER,Y_BORDER+30,412-(X_BORDER*2),20, STR__FRONTEND__SCREEN, &m_nextMode,MODE__SCREEN); CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS], X_BORDER,Y_BORDER+60,412-(X_BORDER*2),20, STR__FRONTEND__SOUND, &m_nextMode,MODE__SOUND); CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS], X_BORDER,176-Y_BORDER-20,412-(X_BORDER*2),20, STR__FRONTEND__EXIT, &m_exitFlag,true); // Populate CONTROLS menu CGUIFactory::createCycleButtonFrame(m_modeMenus[MODE__CONTROL], X_BORDER,Y_BORDER,412-(X_BORDER*2),40, STR__FRONTEND__CONTROL_STYLE, &m_controlStyle,s_controlButtonData,s_controlReadoutText); // Populate SCREEN menu // Populate SOUND menu CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER,412-(X_BORDER*2),35, STR__FRONTEND__BGM, &m_bgmVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER+40,412-(X_BORDER*2),35, STR__FRONTEND__SFX, &m_sfxVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER+80,412-(X_BORDER*2),35, STR__FRONTEND__SPEECH, &m_speechVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); // Add BACK to all of the sub menus for(i=1;ishutdown(); } m_background->shutdown(); delete m_background; } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ void CFrontEndOptions::select() { m_modeMenus[MODE__OPTIONS]->select(); m_mode=m_nextMode=MODE__OPTIONS; m_exitFlag=false; m_closingDown=false; CFader::setFadingIn(); } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ void CFrontEndOptions::unselect() { m_modeMenus[m_mode]->unselect(); } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ void CFrontEndOptions::render() { POLY_G4 *g4; g4=GetPrimG4(); setXYWH(g4,0,0,512,256); setRGB0(g4,50, 0, 0); setRGB1(g4, 0, 0,50); setRGB2(g4, 0,50, 0); setRGB3(g4,50, 0,50); AddPrimToList(g4,1001); m_background->render(); m_modeMenus[m_mode]->render(); } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ int ox=-1; int oy=-1; int os=0; void CFrontEndOptions::think(int _frames) { m_background->setSpeed(ox,oy); m_background->setSpeedScale(os); m_background->think(_frames); if(!CFader::isFading()) { if(m_nextMode!=m_mode) { m_modeMenus[m_mode]->unselect(); m_mode=m_nextMode; m_modeMenus[m_mode]->select(); } m_modeMenus[m_mode]->think(_frames); if(m_mode==MODE__SOUND) { if(m_bgmVolume!=CSoundMediator::getVolume(CSoundMediator::SONG)) { CSoundMediator::setVolume(CSoundMediator::SONG,m_bgmVolume); PAUL_DBGMSG("SONG"); } if(m_sfxVolume!=CSoundMediator::getVolume(CSoundMediator::SFX)) { CSoundMediator::setVolume(CSoundMediator::SFX,m_sfxVolume); PAUL_DBGMSG("SFX"); } if(m_speechVolume!=CSoundMediator::getVolume(CSoundMediator::SPEECH)) { CSoundMediator::setVolume(CSoundMediator::SPEECH,m_speechVolume); PAUL_DBGMSG("SPEECH"); } } } if(!m_closingDown&&m_exitFlag) { CFader::setFadingOut(); m_closingDown=true; } } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ int CFrontEndOptions::isReadyToExit() { return m_closingDown&&!CFader::isFading(); } /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ CFrontEndScene::FrontEndMode CFrontEndOptions::getNextMode() { return CFrontEndScene::MODE__MAIN_TITLES; } /*=========================================================================== end */