Exemple #1
0
void ARX_MENU_Clicked_CREDITS() {
	ARXmenu.currentmode = AMCM_CREDITS;
	Credits::reset();
	ARX_MENU_LaunchAmb(AMB_CREDITS);
}
Exemple #2
0
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);
	
}