// Processes an event coming through from Rocket. void EventManager::ProcessEvent(Rocket::Core::Event& event, const Rocket::Core::String& value) { Rocket::Core::StringList commands; Rocket::Core::StringUtilities::ExpandString(commands, value, ';'); for (size_t i = 0; i < commands.size(); ++i) { // Check for a generic 'load' or 'exit' command. Rocket::Core::StringList values; Rocket::Core::StringUtilities::ExpandString(values, commands[i], ' '); if (values.empty()) return; if (values[0] == "goto" && values.size() > 1) { // Load the window, and if successful close the old window. if (LoadWindow(values[1])) event.GetTargetElement()->GetOwnerDocument()->Close(); } else if (values[0] == "load" && values.size() > 1) { // Load the window. LoadWindow(values[1]); } else if (values[0] == "close") { Rocket::Core::ElementDocument* target_document = NULL; if (values.size() > 1) target_document = context->GetDocument(values[1].CString()); else target_document = event.GetTargetElement()->GetOwnerDocument(); if (target_document != NULL) target_document->Close(); } else if (values[0] == "exit") { Shell::RequestExit(); } else if (values[0] == "pause") { GameDetails::SetPaused(true); } else if (values[0] == "unpause") { GameDetails::SetPaused(false); } else { if (event_handler != NULL) event_handler->ProcessEvent(event, commands[i]); } } }
void GuiManager::OnGuiEvent(Rocket::Core::Event &ev, const Rocket::Core::String &script) { UNUSED(ev) Rocket::Core::StringList commands; Rocket::Core::StringUtilities::ExpandString(commands, script, ';'); for (size_t i = 0; i < commands.size(); ++i) { Rocket::Core::StringList values; Rocket::Core::StringUtilities::ExpandString(values, commands[i], ' '); if (values.empty()) return; if (values[0] == "goto" && values.size() > 1) { if (values[1] == "credits") gFlow->Credits(); else if (values[1] == "menu") gFlow->Menu(); else if (values[1] == "options") gFlow->Options(); else if (values[1] == "game") gFlow->DoLoad("game_level1.scene"); } else if (values[0] == "exit") { pSystem->Shutdown(); } else if (values[0] == "toggle" && values.size() > 1) { if (values[1] == "sfx") { if (gGameData->IsSfxEnabled()) { gGameData->SetSfxVolume(pSoundSystem->GetSfxVolume()); pSoundSystem->SetSfxVolume(0.0f); gGameData->SetSfxEnabled(false); } else { pSoundSystem->SetSfxVolume(gGameData->GetSfxVolume()); gGameData->SetSfxEnabled(true); } } else if (values[1] == "bgm") { if (gGameData->IsBgmEnabled()) { gGameData->SetBgmVolume(pSoundSystem->GetMusicVolume()); pSoundSystem->SetMusicVolume(0.0f); gGameData->SetBgmEnabled(false); } else { pSoundSystem->SetMusicVolume(gGameData->GetBgmVolume()); gGameData->SetBgmEnabled(true); } } else if (values[1] == "fullscreen") { //this->ReleaseGUI(); if (gGameData->IsFullScreenEnabled()) { gGameData->SetFullScreenEnabled(false); pScreen->ToggleFullscreen(); //pSystem->Shutdown(); } else { gGameData->SetFullScreenEnabled(true); pScreen->ToggleFullscreen(); //pSystem->Shutdown(); } //this->InitializeGUI(); //this->ReloadGUI(); } } } }