void ARX_MENU_Clicked_CREDITS() { ARXmenu.currentmode = AMCM_CREDITS; Credits::reset(); ARX_MENU_LaunchAmb(AMB_CREDITS); }
void ARX_Menu_Manage() { // looks for keys for each mode. switch(ARXmenu.currentmode) { case AMCM_OFF: { // Checks for ESC key if(GInput->isKeyPressedNowUnPressed(Keyboard::Key_Escape)) { if(cinematicBorder.isActive()) { // Disabling ESC capture while fading in or out. if(!FADEDIR) { if(SendMsgToAllIO(SM_KEY_PRESSED, "") != REFUSE) { REQUEST_SPEECH_SKIP=1; } } } else { GRenderer->getSnapshot(savegame_thumbnail, 160, 100); arxtime.pause(); ARX_MENU_Launch(true); bFadeInOut=false; //fade out bFade=true; //active le fade TRUE_PLAYER_MOUSELOOK_ON = false; ARX_PLAYER_PutPlayerInNormalStance(); } } break; } case AMCM_NEWQUEST: { if( GInput->isKeyPressedNowUnPressed(Keyboard::Key_Escape) && !bFadeInOut // XS: Disabling ESC capture while fading in or out. ) { ARX_SOUND_PlayMenu(SND_MENU_CLICK); ARXmenu.currentmode = AMCM_MAIN; } break; } case AMCM_MAIN: { if( GInput->isKeyPressedNowUnPressed(Keyboard::Key_Escape) && MENU_NoActiveWindow() && !REFUSE_GAME_RETURN ) { arxtime.resume(); ARX_MENU_Clicked_QUIT(); } break; } case AMCM_CREDITS: { if( GInput->isKeyPressedNowUnPressed(Keyboard::Key_Escape) || GInput->isKeyPressedNowUnPressed(Keyboard::Key_Spacebar) ) { ARX_SOUND_PlayMenu(SND_MENU_CLICK); bFadeInOut = true; //fade out bFade = true; //active le fade iFadeAction = AMCM_MAIN; ARX_MENU_LaunchAmb(AMB_MENU); } break; } default: break; } }
void Credits::render() { //We initialize the datas InitCredits(); int iSize = CreditsData.aCreditsInformations.size() ; //We display them if(CreditsData.iFontAverageHeight != -1) { GRenderer->SetRenderState(Renderer::AlphaBlending, false); GRenderer->SetRenderState(Renderer::Fog, false); GRenderer->SetRenderState(Renderer::DepthWrite, true); GRenderer->SetRenderState(Renderer::DepthTest, false); //Draw Background if(ARXmenu.mda->pTexCredits) { Rectf rect(Vec2f_ZERO, g_size.width(), g_size.height() + 1); EERIEDrawBitmap2(rect, .999f, ARXmenu.mda->pTexCredits, Color::white); } // Use time passed between frame to create scroll effect float time = arxtime.get_updated(false); float dtime = (float)(time - ARXmenu.mda->creditstart); ARXmenu.mda->creditspos -= 0.03f * g_sizeRatio.y * dtime; ARXmenu.mda->creditstart = time; std::vector<CreditsTextInformations>::const_iterator it = CreditsData.aCreditsInformations.begin() + CreditsData.iFirstLine ; for (; it != CreditsData.aCreditsInformations.end(); ++it) { //Update the Y word display float yy = it->sPos.y + ARXmenu.mda->creditspos; //Display the text only if he is on the viewport if ((yy >= -CreditsData.iFontAverageHeight) && (yy <= g_size.height())) { hFontCredits->draw(it->sPos.x, static_cast<int>(yy), it->sText, it->fColors); } if (yy <= -CreditsData.iFontAverageHeight) { ++CreditsData.iFirstLine; } if ( yy >= g_size.height() ) break ; //it's useless to continue because next phrase will not be inside the viewport } } else { LogWarning << "Error initializing credits"; } if(iSize <= CreditsData.iFirstLine && iFadeAction != AMCM_MAIN) { ARXmenu.mda->creditspos = 0; ARXmenu.mda->creditstart = 0 ; CreditsData.iFirstLine = 0 ; bFadeInOut = true; bFade = true; iFadeAction = AMCM_MAIN; ARX_MENU_LaunchAmb(AMB_MENU); } if(ProcessFadeInOut(bFadeInOut,0.1f) && iFadeAction == AMCM_MAIN) { ARXmenu.currentmode = AMCM_MAIN; iFadeAction = -1; bFadeInOut = false; bFade = true; } GRenderer->SetRenderState(Renderer::DepthWrite, true); GRenderer->SetRenderState(Renderer::DepthTest, true); }