347 lines
7.4 KiB
Plaintext
347 lines
7.4 KiB
Plaintext
/*
|
|
MISSION BRIEFING
|
|
*/
|
|
|
|
main()
|
|
{
|
|
setsaveddvar( "hud_drawhud", 0 );
|
|
|
|
level.script = tolower( getdvar( "mapname" ) );
|
|
if ( !isdefined( level.tmpmsg ) )
|
|
level.tmpmsg = [];
|
|
|
|
player = getentarray( "player", "classname" )[ 0 ];
|
|
setsaveddvar( "g_speed", 0 );
|
|
player setViewmodel( "viewmodel_hands_cloth" ); // hack
|
|
|
|
precacheShader( "black" );
|
|
|
|
movieDefined = 0;
|
|
for ( index = 0; index < level.slide.size; index++ )
|
|
{
|
|
if ( isdefined( level.slide[ index ][ "movie" ] ) )
|
|
{
|
|
movieDefined = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( movieDefined )
|
|
{
|
|
// movie
|
|
wait 0.05;
|
|
player gotothelevel( false );
|
|
}
|
|
else
|
|
{
|
|
// Press &&BUTTON_SELECTCHOICE" to Skip."
|
|
precacheString( &"SCRIPT_PLATFORM_FIRE_TO_SKIP" );
|
|
for ( i = 0;i < level.slide.size;i++ )
|
|
if ( isdefined( level.slide[ i ][ "image" ] ) )
|
|
precacheshader( level.slide[ i ][ "image" ] );
|
|
|
|
player thread skipthebriefing();
|
|
player dothebriefing();
|
|
player gotothelevel( false );
|
|
}
|
|
}
|
|
|
|
|
|
// Does the initial startup for a mission briefing
|
|
// iFadeTime Is the length of time it will take to transition between images. Defaults to 500 (milliseconds) Set to 0 for instant change
|
|
start( fFadeTime )
|
|
{
|
|
level.briefing_running = true;
|
|
level.briefing_ending = false;
|
|
level.PlaceNextImage = "A";
|
|
|
|
if ( isdefined( level.imageA ) )
|
|
level.imageA destroy();
|
|
if ( isdefined( level.imageB ) )
|
|
level.imageB destroy();
|
|
if ( isdefined( level.blackscreen ) )
|
|
level.blackscreen destroy();
|
|
if ( isdefined( level.FiretoSkip ) )
|
|
level.FiretoSkip destroy();
|
|
|
|
if ( !isDefined( fFadeTime ) || !fFadeTime )
|
|
{
|
|
level.briefing_fadeInTime = 0.5;
|
|
level.briefing_fadeOutTime = 0.5;
|
|
}
|
|
else
|
|
{
|
|
level.briefing_fadeInTime = fFadeTime;
|
|
level.briefing_fadeOutTime = fFadeTime;
|
|
}
|
|
|
|
self endon( "briefingskip" );
|
|
self thread skipCheck();
|
|
|
|
// Make the screen black
|
|
level.blackscreen = newHudElem();
|
|
level.blackscreen.sort = -1;
|
|
level.blackscreen.alignX = "left";
|
|
level.blackscreen.alignY = "top";
|
|
level.blackscreen.x = 0;
|
|
level.blackscreen.y = 0;
|
|
level.blackscreen.horzAlign = "fullscreen";
|
|
level.blackscreen.vertAlign = "fullscreen";
|
|
level.blackscreen.foreground = true;
|
|
|
|
level.blackscreen.alpha = 1;
|
|
level.blackscreen setShader( "black", 640, 480 );
|
|
|
|
// Fire to skip text
|
|
level.FiretoSkip = newHudElem();
|
|
level.FiretoSkip.sort = 1;
|
|
level.FiretoSkip.alignX = "center";
|
|
level.FiretoSkip.alignY = "top";
|
|
level.FiretoSkip.fontScale = 2;
|
|
level.FiretoSkip.x = 0;
|
|
level.FiretoSkip.y = 60;
|
|
level.FiretoSkip.horzAlign = "center";
|
|
level.FiretoSkip.vertAlign = "fullscreen";
|
|
level.FiretoSkip.foreground = true;
|
|
// Press &&BUTTON_SELECTCHOICE" to Skip."
|
|
level.FiretoSkip settext( &"SCRIPT_PLATFORM_FIRE_TO_SKIP" );
|
|
level.FiretoSkip.alpha = 0.0;
|
|
|
|
thread fadeInFireToSkip();
|
|
|
|
//Image A
|
|
level.imageA = newHudElem();
|
|
level.imageA.alignX = "center";
|
|
level.imageA.alignY = "middle";
|
|
level.imageA.x = 320;
|
|
level.imageA.y = 240;
|
|
level.imageA.alpha = 0;
|
|
level.imageA.horzAlign = "fullscreen";
|
|
level.imageA.vertAlign = "fullscreen";
|
|
level.imageA setShader( "black", 640, 360 );
|
|
level.imageA.foreground = true;
|
|
|
|
//Image B
|
|
level.imageB = newHudElem();
|
|
level.imageB.alignX = "center";
|
|
level.imageB.alignY = "middle";
|
|
level.imageB.x = 320;
|
|
level.imageB.y = 240;
|
|
level.imageB.horzAlign = "fullscreen";
|
|
level.imageB.vertAlign = "fullscreen";
|
|
level.imageB.alpha = 0;
|
|
level.imageB setShader( "black", 640, 360 );
|
|
level.imageB.foreground = true;
|
|
|
|
self freezeControls( true );
|
|
|
|
wait .5;
|
|
|
|
for ( i = 0;i < level.slide.size;i++ )
|
|
{
|
|
soundplaying = false;
|
|
if ( isdefined( level.slide[ i ][ "image" ] ) )
|
|
{
|
|
if ( level.script[ 0 ] != "m" )// movie_ maps don't play the sound
|
|
self soundplay( "slide_advance" );
|
|
wait .5;
|
|
self thread image( level.slide[ i ][ "image" ] );
|
|
}
|
|
if ( isdefined( level.slide[ i ][ "dialog_wait" ] ) && self.dialogplaying[ level.slide[ i ][ "dialog_wait" ] ] )
|
|
{
|
|
self waittill( level.slide[ i ][ "dialog_wait" ] + "sounddone" );
|
|
}
|
|
if ( isdefined( level.slide[ i ][ "dialog" ] ) )
|
|
{
|
|
self soundplay( level.slide[ i ][ "dialog" ], level.slide[ i ][ "dialog" ] + "sounddone" );
|
|
soundplaying = true;
|
|
}
|
|
if ( isdefined( level.slide[ i ][ "delay" ] ) )
|
|
{
|
|
wait( level.slide[ i ][ "delay" ] );
|
|
}
|
|
else if ( soundplaying )
|
|
{
|
|
self waittill( level.slide[ i ][ "dialog" ] + "sounddone" );
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
fadeInFireToSkip()
|
|
{
|
|
wait( 1 );
|
|
thread fadeFireToSkip();
|
|
level.FiretoSkip fadeOverTime( level.briefing_fadeOutTime );
|
|
level.FiretoSkip.alpha = 1.0;
|
|
}
|
|
|
|
// fades fire to skip after 7 seconds
|
|
fadeFireToSkip()
|
|
{
|
|
wait 7;
|
|
level.FiretoSkip fadeOverTime( level.briefing_fadeOutTime );
|
|
level.FiretoSkip.alpha = 0.0;
|
|
}
|
|
|
|
// waits till the briefing is done
|
|
waitTillBriefingDone()
|
|
{
|
|
self waittill( "briefingend" );
|
|
}
|
|
|
|
// This ends the briefing if the player says he wants to
|
|
skipCheck()
|
|
{
|
|
self endon( "briefingend" );
|
|
|
|
player = getentarray( "player", "classname" )[ 0 ];
|
|
|
|
wait( 0.05 );
|
|
|
|
maps\_utility::set_console_status();
|
|
|
|
for ( ;; )
|
|
{
|
|
// we want to check if the "A" button has been pressed on xenon
|
|
// instead of FIRE.
|
|
if ( level.console )
|
|
{
|
|
if ( player buttonPressed( "BUTTON_A" ) )
|
|
{
|
|
self notify( "briefingskip" );
|
|
end();
|
|
return;
|
|
}
|
|
wait( 0.05 );
|
|
continue;
|
|
}
|
|
|
|
if ( player attackButtonPressed() )
|
|
{
|
|
self notify( "briefingskip" );
|
|
end();
|
|
return;
|
|
}
|
|
wait( 0.05 );
|
|
}
|
|
}
|
|
|
|
image( sImageShader )
|
|
{
|
|
self endon( "briefingskip" );
|
|
|
|
if ( level.PlaceNextImage == "A" )
|
|
{
|
|
level.PlaceNextImage = "B";
|
|
level.imageA setShader( sImageShader, 640, 360 );
|
|
thread imageFadeOut( "B" );
|
|
level.imageA fadeOverTime( level.briefing_fadeInTime );
|
|
level.imageA.alpha = 1;
|
|
}
|
|
else if ( level.PlaceNextImage == "B" )
|
|
{
|
|
level.PlaceNextImage = "A";
|
|
level.imageB setShader( sImageShader, 640, 360 );
|
|
thread imageFadeOut( "A" );
|
|
level.imageB fadeOverTime( level.briefing_fadeInTime );
|
|
level.imageB.alpha = 1;
|
|
}
|
|
}
|
|
|
|
imageFadeOut( elem )
|
|
{
|
|
if ( elem == "A" )
|
|
{
|
|
level.imageA fadeOverTime( level.briefing_fadeOutTime );
|
|
level.imageA.alpha = 0;
|
|
}
|
|
else if ( elem == "B" )
|
|
{
|
|
level.imageB fadeOverTime( level.briefing_fadeOutTime );
|
|
level.imageB.alpha = 0;
|
|
}
|
|
}
|
|
|
|
endThread()
|
|
{
|
|
// Check for the briefing already being ended
|
|
if ( !level.briefing_running )
|
|
return;
|
|
if ( level.briefing_ending )
|
|
return;
|
|
|
|
self notify( "briefingend" );
|
|
level.briefing_ending = true;
|
|
|
|
// Make sure the briefing audio is ended on for slideshows
|
|
if ( level.script[ 0 ] != "m" )
|
|
{
|
|
self playsound( "stop_voice" );
|
|
}
|
|
|
|
// Fade the screen in
|
|
thread imageFadeOut( "A" );
|
|
thread imageFadeOut( "B" );
|
|
|
|
wait( 1.5 );
|
|
// self freezeControls(false);
|
|
|
|
level.briefing_ending = false;
|
|
}
|
|
|
|
end()
|
|
{
|
|
self thread endThread();
|
|
}
|
|
|
|
soundplay( dialog, msg )
|
|
{
|
|
if ( isdefined( level.tmpmsg[ dialog ] ) )
|
|
iprintlnbold( level.tmpmsg[ dialog ] );
|
|
if ( isdefined( msg ) )
|
|
{
|
|
thread soundplay_flag( dialog, msg );
|
|
self playsound( dialog, msg );
|
|
}
|
|
else
|
|
self playsound( dialog );
|
|
}
|
|
|
|
soundplay_flag( dialog, msg )
|
|
{
|
|
self.dialogplaying[ dialog ] = true;
|
|
self waittill( msg );
|
|
self.dialogplaying[ dialog ] = false;
|
|
}
|
|
|
|
dothebriefing()
|
|
{
|
|
self start( 0.5 );
|
|
if ( level.script[ 0 ] != "m" )// movie_ maps don't play the sound
|
|
self soundplay( "slide_advance" );
|
|
wait( 0.5 );
|
|
end();
|
|
}
|
|
|
|
skipthebriefing()
|
|
{
|
|
self waittill( "briefingskip" );
|
|
gotothelevel( true );
|
|
}
|
|
|
|
gotothelevel( skipMovie )
|
|
{
|
|
if ( !skipMovie )
|
|
{
|
|
for ( i = 0;i < level.slide.size;i++ )
|
|
{
|
|
if ( isdefined( level.slide[ i ][ "movie" ] ) )
|
|
cinematic( level.slide[ i ][ "movie" ] );
|
|
}
|
|
}
|
|
|
|
changeLevel( level.levelToLoad, false );
|
|
}
|
|
|