void NWNEngine::mainMenuLoop() { playMenuMusic(); // Start sound playSound("gui_prompt", Sound::kSoundTypeSFX); // Create and fade in the legal billboard Legal *legal = new Legal; Console console; Module module(*_version, console); _scriptFuncs->setModule(&module); console.setModule(&module); while (!EventMan.quitRequested()) { GUI *mainMenu = new MainMenu(module); EventMan.flushEvents(); if (legal) { // Fade in, show and fade out the legal billboard legal->fadeIn(); mainMenu->show(); legal->show(); delete legal; legal = 0; } else mainMenu->show(); mainMenu->run(); mainMenu->hide(); delete mainMenu; if (EventMan.quitRequested()) break; stopMenuMusic(); module.run(); if (EventMan.quitRequested()) break; playMenuMusic(); console.hide(); module.clear(); } _scriptFuncs->setModule(0); console.setModule(); stopMenuMusic(); delete legal; }
void MainMenu::callbackActive(Widget &widget) { if (widget.getTag() == "BTN_NEWGAME") { // Stop the currently running main music stopMenuMusic(); createClassSelection(); // Start the charGen music startCharGenMusic(); if (sub(*_classSelection) == 2) { _returnCode = 2; stopMenuMusic(); return; } // If we return from the chargen we stop the music and play the main music stopMenuMusic(); startMainMusic(); return; } if (widget.getTag() == "BTN_LOADGAME") { createLoadGame(); if (sub(*_loadGame) == 2) { _returnCode = 2; stopMenuMusic(); } return; } if (widget.getTag() == "BTN_MOVIES") { createMovies(); sub(*_movies); return; } if (widget.getTag() == "BTN_OPTIONS") { createOptions(); sub(*_options); return; } if (widget.getTag() == "BTN_EXIT") { EventMan.requestQuit(); _returnCode = 1; return; } }
// Save the choosen values in the corresponding parameter file. static void saveSoundOption(void *) { const int BUFSIZE = 1024; char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "%s%s", GetLocalDir(), GR_SOUND_PARM_CFG); void *paramHandle = GfParmReadFile(buf, GFPARM_RMODE_REREAD | GFPARM_RMODE_CREAT); GfParmSetStr(paramHandle, GR_SCT_SOUND, GR_ATT_SOUND_STATE, soundOptionList[curOption]); GfParmSetNum(paramHandle, GR_SCT_SOUND, GR_ATT_SOUND_VOLUME, "%", VolumeValue); GfParmWriteFile(NULL, paramHandle, "sound"); GfParmReleaseHandle(paramHandle); // Write Menu music optons snprintf(buf, BUFSIZE, "%s%s", GetLocalDir(), MM_SOUND_PARM_CFG); paramHandle = GfParmReadFile(buf, GFPARM_RMODE_REREAD | GFPARM_RMODE_CREAT); GfParmSetStr(paramHandle, MM_SCT_SOUND, MM_ATT_SOUND_ENABLE, menuMusicList[curOptionMenuMusic]); GfParmWriteFile(NULL, paramHandle, "sound"); GfParmReleaseHandle(paramHandle); if (curOptionMenuMusic == 1) { startMenuMusic(); } else { stopMenuMusic(); } // Return to previous screen. GfuiScreenActivate(prevHandle); return; }
void Game::playMenuMusic(Common::UString music) { stopMenuMusic(); if (music.empty()) music = "mus_theme_cult"; _menuMusic = playSound(music, Sound::kSoundTypeMusic, true); }
void Game::playMenuMusic(Common::UString music) { stopMenuMusic(); if (music.empty()) music = ConfigMan.getBool("NWN_hasXP2") ? "mus_x2theme" : "mus_theme_main"; _menuMusic = playSound(music, Sound::kSoundTypeMusic, true); }
void Game::stopMusic() { stopMenuMusic(); if (_module && _module->isRunning()) { Area *area = _module->getCurrentArea(); if (area) area->stopAmbientMusic(); } }
void KotOR2Engine::mainMenuLoop() { playMenuMusic(); _module = new Module(*_console); while (!EventMan.quitRequested()) { GUI *mainMenu = new MainMenu(*_module, _console); EventMan.flushEvents(); _console->disableCommand("loadmodule", "not available in the main menu"); _console->disableCommand("exitmodule", "not available in the main menu"); mainMenu->show(); mainMenu->run(); mainMenu->hide(); _console->enableCommand("loadmodule"); _console->enableCommand("exitmodule"); delete mainMenu; if (EventMan.quitRequested()) break; stopMenuMusic(); _module->run(); if (EventMan.quitRequested()) break; playMenuMusic(); _console->hide(); _module->clear(); } delete _module; _module = 0; stopMenuMusic(); }
void KotOREngine::mainMenuLoop() { playMenuMusic(); Console console; Module module(console); console.setModule(&module); while (!EventMan.quitRequested()) { GUI *mainMenu = new MainMenu(module, _platform == Aurora::kPlatformXbox); EventMan.flushEvents(); mainMenu->show(); mainMenu->run(); mainMenu->hide(); delete mainMenu; if (EventMan.quitRequested()) break; stopMenuMusic(); module.run(); if (EventMan.quitRequested()) break; playMenuMusic(); console.hide(); module.clear(); } console.setModule(); stopMenuMusic(); }
void Game::mainMenu() { EventMan.flushEvents(); MainMenu menu(*_module, _console); _console->disableCommand("loadmodule", "not available in the main menu"); _console->disableCommand("exitmodule", "not available in the main menu"); menu.show(); playMenuMusic(); menu.run(); stopMenuMusic(); menu.hide(); _console->enableCommand("loadmodule"); _console->enableCommand("exitmodule"); }
void Game::mainMenu(bool playStartSound, bool showLegal) { playMenuMusic(); if (playStartSound) playSound("gui_prompt", Sound::kSoundTypeSFX); EventMan.flushEvents(); MainMenu menu(*_module, _console); if (showLegal) { // Fade in, show and fade out the legal billboard Legal legal; legal.fadeIn(); menu.show(); legal.show(); } else menu.show(); _console->disableCommand("loadcampaign", "not available in the main menu"); _console->disableCommand("loadmodule" , "not available in the main menu"); _console->disableCommand("exitmodule" , "not available in the main menu"); _console->disableCommand("listareas" , "not available in the main menu"); _console->disableCommand("gotoarea" , "not available in the main menu"); menu.run(); _console->enableCommand("loadcampaign"); _console->enableCommand("loadmodule"); _console->enableCommand("exitmodule"); _console->enableCommand("listareas"); _console->enableCommand("gotoarea"); menu.hide(); stopMenuMusic(); }
void Game::playMenuMusic() { stopMenuMusic(); if (_musicBank) { /* TODO: music.2da contains an entry for "mus_thm_MAINTHEME1", but this * gives us a state number. We will probably need to throw that state * number at the XACT SoundBank (xsb) somehow. * * Until that works, we'll get the main menu music by its index in the * XACT WaveBank (xwb) instead. */ static const size_t mainMenuMusic = 46; try { Sound::AudioStream *stream = Sound::makeLoopingAudioStream(_musicBank->getWave(mainMenuMusic), 0); _menuMusic = SoundMan.playAudioStream(stream, Sound::kSoundTypeMusic); SoundMan.startChannel(_menuMusic); } catch (...) { Common::exceptionDispatcherWarning(); } } }
/* return state mode */ static int reRaceRealStart(void) { int i, j; int sw, sh, vw, vh; tRobotItf *robot; tReCarInfo *carInfo; const int BUFSIZE = 1024; char buf[BUFSIZE]; int foundHuman; void *params = ReInfo->params; void *results = ReInfo->results; tSituation *s = ReInfo->s; RmLoadingScreenSetText("Loading Simulation Engine..."); const char* dllname = GfParmGetStr(ReInfo->_reParam, "Modules", "simu", ""); snprintf(buf, BUFSIZE, "%smodules/simu/%s.%s", GetLibDir (), dllname, DLLEXT); if (GfModLoad(0, buf, &ReRaceModList)) return RM_QUIT; ReRaceModList->modInfo->fctInit(ReRaceModList->modInfo->index, &ReInfo->_reSimItf); if (ReInitCars()) { return RM_QUIT; } /* Blind mode or not */ if (ReInfo->_displayMode != RM_DISP_MODE_CONSOLE) { ReInfo->_displayMode = RM_DISP_MODE_NORMAL; ReInfo->_reGameScreen = ReScreenInit(); foundHuman = 0; for (i = 0; i < s->_ncars; i++) { if (s->cars[i]->_driverType == RM_DRV_HUMAN) { foundHuman = 1; break; } } if (!foundHuman) { if (!strcmp(GfParmGetStr(params, ReInfo->_reRaceName, RM_ATTR_DISPMODE, RM_VAL_VISIBLE), RM_VAL_INVISIBLE)) { ReInfo->_displayMode = RM_DISP_MODE_NONE; ReInfo->_reGameScreen = ReResScreenInit(); } } } if (!(ReInfo->s->_raceType == RM_TYPE_QUALIF) || ((int)GfParmGetNum(results, RE_SECT_CURRENT, RE_ATTR_CUR_DRIVER, NULL, 1) == 1)) { RmLoadingScreenStart(ReInfo->_reName, "data/img/splash-qrloading.png"); } for (i = 0; i < s->_ncars; i++) { snprintf(buf, BUFSIZE, "Initializing Driver %s...", s->cars[i]->_name); RmLoadingScreenSetText(buf); robot = s->cars[i]->robot; robot->rbNewRace(robot->index, s->cars[i], s); } carInfo = ReInfo->_reCarInfo; ReInfo->_reSimItf.update(s, RCM_MAX_DT_SIMU, -1); for (i = 0; i < s->_ncars; i++) { carInfo[i].prevTrkPos = s->cars[i]->_trkPos; } RmLoadingScreenSetText("Running Prestart..."); for (i = 0; i < s->_ncars; i++) { memset(&(s->cars[i]->ctrl), 0, sizeof(tCarCtrl)); s->cars[i]->ctrl.brakeCmd = 1.0; } for (j = 0; j < ((int)(1.0 / RCM_MAX_DT_SIMU)); j++) { ReInfo->_reSimItf.update(s, RCM_MAX_DT_SIMU, -1); } if (ReInfo->_displayMode == RM_DISP_MODE_NONE) { if (ReInfo->s->_raceType == RM_TYPE_QUALIF) { ReUpdateQualifCurRes(s->cars[0]); } else { snprintf(buf, BUFSIZE, "%s on %s", s->cars[0]->_name, ReInfo->track->name); ReResScreenSetTitle(buf); } } RmLoadingScreenSetText("Ready."); ReInfo->_reTimeMult = 1.0; ReInfo->_reLastTime = -1.0; ReInfo->s->currentTime = -2.0; ReInfo->s->deltaTime = RCM_MAX_DT_SIMU; ReInfo->s->_raceState = RM_RACE_STARTING; if ((ReInfo->_displayMode != RM_DISP_MODE_CONSOLE) && ReInfo->_reGraphicItf.initview != 0) { GfScrGetSize(&sw, &sh, &vw, &vh); ReInfo->_reGraphicItf.initview((sw-vw)/2, (sh-vh)/2, vw, vh, GR_VIEW_STD, ReInfo->_reGameScreen); if (ReInfo->_displayMode == RM_DISP_MODE_NORMAL) { /* RmLoadingScreenSetText("Loading Cars 3D Objects..."); */ stopMenuMusic(); ReInfo->_reGraphicItf.initcars(s); } GfuiScreenActivate(ReInfo->_reGameScreen); } // If the race is adaptive, initialize performance measurement. Uses strategy pattern, pass in the desired performance measurement object. if (taManager->IsActive()) { if (taManager->GetRaceType() == torcsAdaptive::TARaceType::Adaptive) taManager->InitPerfMeasurement(new RaceLineEvaluation(&ReInfo->carList[0], Pathfinder::K1999, ReInfo->track, ReInfo->s)); } return RM_SYNC | RM_NEXT_STEP; }