#include maps\mp\gametypes\_hud_util;

showtime( winner, isRound, endReasonText, delay )
{
	self endon ( "disconnect" );
	self notify ( "reset_outcome" );
	level.teamColor_att = ( 0.05, 0.25, 0.4 ); 
	level.teamColor_def = ( 0.4, 0.05, 0.1 );

	self setclientdvars("ui_hud_obituaries", 0, "cg_drawcrosshair", 0 );
	team = self.pers["team"];
	if ( !isDefined( self.pers["team"] ) || (team != "allies" && team != "axis") )
		team = "allies";
	
	level.vertalign = "middle";
	level.vertStart = 0;

	while ( self.doingNotify )
		wait 0.05;

	if ( isDefined ( delay ) )
		wait delay;

	self endon ( "reset_outcome" );
	
	
	self thread crossthingOperation( winner );
	wait 0.5;
	
	self thread gradienttOperation( winner );
	self thread framethingOperation();

	self thread outcomeTitleOperation( winner, isRound );
	self thread outcomeTextOperation( endReasonText );
	self thread iconOperation( winner );
	self thread trasitionHudDestroy();
	self thread scoreOperaition( winner );
	
}

trasitionHudDestroy()
{
	self endon( "disconnect" );
	self waittill ( "reset_outcome" );

	if ( isDefined( self.outcomeTitle ) )
		self.outcomeTitle destroy();
	if ( isDefined( self.outcomeTitleBar ) )
		self.outcomeTitleBar destroy();
	if ( isDefined( self.outcomeText ) )
		self.outcomeText destroy();
	if ( isDefined( self.leftIcon ) )
		self.leftIcon destroy();
	if ( isDefined( self.rightIcon ) )
		self.rightIcon destroy();
	if ( isDefined( self.leftScore ) )
		self.leftScore destroy();
	if ( isDefined( self.rightScore ) )
		self.rightScore destroy();
	if ( isDefined( self.leftframe ) )
		self.leftframe destroy();
	if ( isDefined( self.rightframe ) )
		self.rightframe destroy();
	if ( isDefined( self.gradientt ) )
		self.gradientt destroy();
	if ( isDefined( self.crossthingLeft ) )
		self.crossthingLeft destroy();
	if ( isDefined( self.crossthingRight ) )
		self.crossthingRight destroy();
	if ( isDefined( self.framething ) )
		self.framething destroy();
	return;
}

scoreOperaition( winner )
{
	level endon("game_ended");
	self endon("disconnect");
	
	team = self.pers["team"];
	if ( !isDefined( self.pers["team"] ) || (team != "allies" && team != "axis") )
		team = "allies";
	
	self.leftScore = createFontString( "objective", 3.5 );
	self.leftScore.alignX = "center";
	self.leftScore.alignY = "middle";
	self.leftScore.horzAlign = "center";
	self.leftScore.vertalign = level.vertalign;
	self.leftScore.owner = self;
	self.leftScore.x = -100;
	self.leftScore.y = level.vertStart + 110;
	self.leftScore setValue( getTeamScore( team ) );
	self.leftScore.hideWhenInMenu = false;
	self.leftScore.archived = false;

	self.rightScore = createFontString( "objective", 3.5 );
	self.rightScore.alignX = "center";
	self.rightScore.alignY = "middle";
	self.rightScore.horzAlign = "center";
	self.rightScore.vertalign = level.vertalign;
	self.rightScore.owner = self;
	self.rightScore.x = 100;
	self.rightScore.y = level.vertStart + 110;
	self.rightScore setValue( getTeamScore( level.otherTeam[team] ) );
	self.rightScore.hideWhenInMenu = false;
	self.rightScore.archived = false;
	
	self.leftframe = newClientHudElem(self);
	self.leftframe.alignX = "center";
	self.leftframe.alignY = "middle";
	self.leftframe.horzAlign = "center";
	self.leftframe.vertalign = level.vertalign;
	self.leftframe.owner = self;
	self.leftframe.x = -100;
	self.leftframe.y = level.vertStart + 110;
	self.leftframe setshader("framething1", 100,100);
	self.leftframe.hideWhenInMenu = false;
	self.leftframe.archived = false;

	self.rightframe = newClientHudElem(self);
	self.rightframe.alignX = "center";
	self.rightframe.alignY = "middle";
	self.rightframe.horzAlign = "center";
	self.rightframe.vertalign = level.vertalign;
	self.rightframe.owner = self;
	self.rightframe.x = 100;
	self.rightframe.y = level.vertStart + 110;
	self.rightframe.hideWhenInMenu = false;
	self.rightframe.archived = false;
	
	if( winner != "intermission" && winner != "halftime" && winner != "tie" )
	{
		self.leftframe.color = ( 1, 1, 1);
		self.rightframe.color = ( 1, 1, 1);
	}
	
	if ( isDefined( self.pers["team"] ) && winner == team )
	{
		self.leftframe setshader("framething2", 100,100);
		self.rightframe setshader("framething1", 100,100);
		//self playLocalSound( "victory" );
		wait 0.5;
		self.leftScore thread blink( 0.05, 3 );
	}
	else if ( isDefined( self.pers["team"] ) && winner == level.otherTeam[team] )
	{
		self.leftframe setshader("framething1", 100,100);
		self.rightframe setshader("framething2", 100,100);
		wait 0.5;
		self.rightScore thread blink( 0.05, 3 );
	}
	else
	{
		self.leftScore setValue( getTeamScore( level.otherTeam[team] ) );
		self.rightScore setValue( getTeamScore( team ) );

		self.leftframe setshader("framething1", 100,100);
		self.rightframe setshader("framething1", 100,100);
		wait 0.5;
		self.leftScore thread blink( 0.05, 3 );
		self.rightScore thread blink( 0.05, 3 );
	}
	
	wait 0.3; //coz blink was threaded and it runs for 0.05x2x3 = 0.3
	if( winner != "intermission" && winner != "halftime" )
	{  //check this deep
		//wait 2.3;

		self.leftScore fadeOverTime( 0.5 );
		self.leftScore.alpha = 0;
		self.rightScore fadeOverTime( 0.5 );
		self.rightScore.alpha = 0;

		self.leftframe fadeOverTime( 0.5 );
		self.leftframe.alpha = 0;
		self.rightframe fadeOverTime( 0.5 );
		self.rightframe.alpha = 0;
	}
	else
	{
		self.leftScore moveovertime( 0.5 );
		self.leftScore.x = 100;
		self.rightScore moveovertime( 0.5 );
		self.rightScore.x = -100;
	}
	wait 1; // looks off without it
	self setclientdvars("ui_hud_obituaries", 1, "cg_drawcrosshair", 1 );
}

iconOperation( winner )
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	team = self.pers["team"];
	if ( !isDefined( self.pers["team"] ) || (team != "allies" && team != "axis") )
		team = "allies";
	
	self.leftIcon = createIcon( game["icons"][team], 80, 100 );
	self.leftIcon.alignX = "left";
	self.leftIcon.alignY = "top";
	self.leftIcon.horzAlign = "fullscreen";
	self.leftIcon.vertalign = level.vertalign;
	self.leftIcon.owner = self;
	self.leftIcon.x = 0;
	self.leftIcon.y = level.vertStart + 70;
	self.leftIcon.hideWhenInMenu = false;
	self.leftIcon.archived = false;
	self.leftIcon.color = (1, 1, 1);
	self.leftIcon.alpha = 0;

	self.rightIcon = createIcon( game["icons"][level.otherTeam[team]], 80, 100 );
	self.rightIcon.alignX = "left";
	self.rightIcon.alignY = "top";
	self.rightIcon.horzAlign = "fullscreen";
	self.rightIcon.vertalign = level.vertalign;
	self.rightIcon.x = 540;
	self.rightIcon.y = level.vertStart + 70;
	self.rightIcon.owner = self;
	self.rightIcon.hideWhenInMenu = false;
	self.rightIcon.color = (1, 1, 1);
	self.rightIcon.archived = false;
	self.rightIcon.alpha = 0;
	
	if( winner != "intermission" && winner != "halftime" && winner != "tie" )
	{
		self.leftIcon.color = ( 1, 1, 1);
		self.rightIcon.color = ( 1, 1, 1);
	}
	
	self.leftIcon fadeOverTime( 0.5 );
	self.leftIcon.alpha = 1;
	self.leftIcon moveovertime( 0.5 );
	self.leftIcon.x = 30;
	
	self.rightIcon fadeOverTime( 0.5 );
	self.rightIcon.alpha = 1;
	self.rightIcon moveovertime( 0.5 );
	self.rightIcon.x = 510;
	
	wait 2.9;
	
	self.leftIcon fadeOverTime( 0.5 );
	self.leftIcon.alpha = 0;
	self.rightIcon fadeOverTime( 0.5 );
	self.rightIcon.alpha = 0;
}

outcomeTextOperation( endReasonText )
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	self.outcomeText = createFontString( "objective", 1.6 );
	self.outcomeText.x = 0;
	self.outcomeText.y = level.vertStart + 32;
	self.outcomeText.alignX = "center";
	self.outcomeText.alignY = "middle";
	self.outcomeText.horzAlign = "center";
	self.outcomeText.owner = self;
	self.outcomeText.vertalign = level.vertalign;
	self.outcomeText.sort = 11;
	self.outcomeText.hideWhenInMenu = false;
	self.outcomeText.archived = false;
	self.outcomeText setText( endReasonText );
	
	wait 2.9;
	self.outcomeText fadeOverTime( 0.5 );
	self.outcomeText.alpha = 0;
}

outcomeTitleOperation( winner, isRound )
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	team = self.pers["team"];
	if ( !isDefined( team ) || (team != "allies" && team != "axis") )
		team = "allies";

	self.outcomeTitle = createFontString( "objective", 3 );
	self.outcomeTitle.x = 0;
	self.outcomeTitle.y = level.vertStart;
	self.outcomeTitle.alignX = "center";
	self.outcomeTitle.alignY = "middle";
	self.outcomeTitle.horzAlign = "center";
	self.outcomeTitle.vertalign = level.vertalign;
	self.outcomeTitle.sort = 10;
	self.outcomeTitle.fontscale = 3;
	self.outcomeTitle.owner = self;
	self.outcomeTitle.hideWhenInMenu = false;
	self.outcomeTitle.archived = false;
	
	self.outcomeTitleBar = newClientHudElem( self );
	self.outcomeTitleBar.alignX = "center";
	self.outcomeTitleBar.alignY = "middle";
	self.outcomeTitleBar.horzAlign = "center";
	self.outcomeTitleBar.vertalign = level.vertalign;
	self.outcomeTitleBar.alpha = 1;
	self.outcomeTitleBar.sort = -1;
	self.outcomeTitleBar.x = 0;
	self.outcomeTitleBar.y = level.vertStart;
	self.outcomeTitleBar.owner = self;
	self.outcomeTitleBar.archived = false;
	self.outcomeTitleBar setShader( "line_horizontal", 300, 34 );
	
	if ( winner == "halftime" )
	{
		self.outcomeTitle setText( game["strings"]["halftime"] );
		self.outcomeTitle.color = (1, 1, 1);
		self.outcomeTitleBar.color = ( 0.3, 0.3, 0.3 );
	}
	else if ( winner == "intermission" )
	{
		self.outcomeTitle setText( game["strings"]["intermission"] );
		self.outcomeTitle.color = (1, 1, 1);
		self.outcomeTitleBar.color = ( 0.3, 0.3, 0.3 );
	}
	else if ( winner == "roundend" )
	{
		self.outcomeTitle setText( game["strings"]["roundend"] );
		self.outcomeTitle.color = (1, 1, 1);
		self.outcomeTitleBar.color = ( 0.3, 0.3, 0.3 );
	}
	else if ( winner == "tie" )
	{
		if ( isRound )
			self.outcomeTitle setText( "ROUND DRAW" );
		else self.outcomeTitle setText( "DRAW" );
		self.outcomeTitle.color = (1, 1, 1);
		self.outcomeTitleBar.color = ( 0.3, 0.3, 0.3 );
	}
	else if ( isDefined( self.pers["team"] ) && winner == team )
	{
		if ( isRound )
			self.outcomeTitle setText( "ROUND WON" );
		else self.outcomeTitle setText( "VICTORY" );
		self.outcomeTitle.color = level.teamColor_att; //not 
		self.outcomeTitleBar.color = ( 0.05, 0.25, 0.4 );
	}
	else
	{
		if ( isRound )
			self.outcomeTitle setText( "ROUND LOSS" );
		else self.outcomeTitle setText( "DEFEAT" );
		self.outcomeTitle.color = level.teamColor_def; //not
		self.outcomeTitleBar.color = ( 0.4, 0.05, 0.1 );
	}
	self.outcomeTitle.alpha = 0;
	self.outcomeTitle fadeOverTime( 0.25 );
	self.outcomeTitle.alpha = 1;
	
	self.outcomeTitleBar.alpha = 0;
	self.outcomeTitleBar fadeOverTime( 0.25 );
	self.outcomeTitleBar.alpha = 1;
	
	wait 2.8;
	self.outcomeTitle fadeOverTime( 0.5 );
	self.outcomeTitle.alpha = 0;
	self.outcomeTitleBar fadeOverTime( 0.5 );
	self.outcomeTitleBar.alpha = 0;
}

crossthingOperation( winner )
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	if ( winner == "intermission" || winner == "halftime" )
		return;

	self.crossthingLeft = newClientHudElem( self );
	self.crossthingRight = newClientHudElem( self );

	self.crossthingLeft.alignX = "center";
	self.crossthingLeft.alignY = "middle";
	self.crossthingLeft.horzAlign = "center";
	self.crossthingLeft.vertalign = level.vertalign;
	self.crossthingLeft.alpha = 1;
	self.crossthingLeft.x = 0;
	self.crossthingLeft.y = level.vertStart;
	self.crossthingLeft.owner = self;
	self.crossthingLeft.archived = false;
	self.crossthingLeft setShader( "crossthing", 18, 18 );
	
	if(isDefined(self.crossthingLeft))
		self.crossthingLeft blink( 0.05, 3 );
	
	if(isDefined(self.crossthingRight))
	{
		self.crossthingRight.alignX = "center";
		self.crossthingRight.alignY = "middle";
		self.crossthingRight.horzAlign = "center";
		self.crossthingRight.vertalign = level.vertalign;
		self.crossthingRight.alpha = 1;
		self.crossthingRight.x = 0;
		self.crossthingRight.y = level.vertStart;
		self.crossthingRight.owner = self;
		self.crossthingRight.archived = false;
		self.crossthingRight setShader( "crossthing", 18, 18 );
	}
	
	if(isDefined(self.crossthingLeft))
	{
		self.crossthingLeft moveovertime( 0.15 );
		self.crossthingLeft.x = -200;
	}
	
	if(isDefined(self.crossthingRight))
	{
		self.crossthingRight moveovertime( 0.15 );
		self.crossthingRight.x = 200;
	}
	
	wait 1;
	
	if(isDefined(self.crossthingLeft))
		self.crossthingLeft thread blink( 0.05, 3 );
	if(isDefined(self.crossthingRight))
		self.crossthingRight thread blink( 0.05, 3 );
	
	wait 0.35;
	
	if(isDefined(self.crossthingLeft))
	{
		self.crossthingLeft moveovertime( 0.15 );
		self.crossthingLeft.x = -50;
		self.crossthingLeft fadeovertime( 0.10 );
		self.crossthingLeft.alpha = 0;
	}
	
	if(isDefined(self.crossthingRight))
	{
		self.crossthingRight moveovertime( 0.15 );
		self.crossthingRight.x = 50;
		self.crossthingRight fadeovertime( 0.10 );
		self.crossthingRight.alpha = 0;
	}
}

gradienttOperation( winner )
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	team = self.pers["team"];
	
	self.gradientt = newClientHudElem( self );
	self.gradientt.alignX = "left";
	self.gradientt.alignY = "top";
	self.gradientt.horzAlign = "fullscreen";
	self.gradientt.vertalign = "bottom";
	self.gradientt.alpha = 0;
	self.gradientt.sort = -4;
	self.gradientt.x = 0;
	self.gradientt.y = -240;
	self.gradientt.archived = false;
	self.gradientt.owner = self;
	self.gradientt setShader( "gradient_white_bot", 640, 400 );
	
	if ( isDefined( self.pers["team"] ) && winner == team )
		self.gradientt.color = level.teamColor_att; //not
	else if ( isDefined( self.pers["team"] ) && winner != team )
		self.gradientt.color = level.teamColor_def; //not
	else self.gradientt.color = ( 0.3, 0.3, 0.3 );
	
	if ( winner == "intermission" || winner == "halftime" )
	{
		self.gradientt.alpha = 1;
		self.gradientt fadeOverTime( 1 );
		self.gradientt.color = ( 0.3, 0.3, 0.3 );
	}
	else
	{
		self.gradientt fadeOverTime( 1 );
		self.gradientt.alpha = 0.5;
		
		wait 2.9;
		self.gradientt fadeOverTime( 0.5 );
		self.gradientt.alpha = 0;
	}
}

blink( rate, count )
{
	if(!isDefined(self.owner))
		return;
	level endon("game_ended");
	self.owner endon("disconnect");
	self.owner endon("reset_outcome");
	
	for(i=0;i<count&&isDefined( self );i++)
	{
		wait rate;
		if(!isDefined( self ))
			return;
		self.alpha = 0;
		if(!isDefined( self ))
			return;
		wait rate;
		if(!isDefined( self ))
			return;
		self.alpha = 1;
	}
	return;
}

framethingOperation()
{
	level endon("game_ended");
	self endon("disconnect");
	self endon("reset_outcome");
	
	self.framething = newClientHudElem( self );
	
	self.framething.alignX = "left";
	self.framething.alignY = "top";
	self.framething.horzAlign = "fullscreen";
	self.framething.vertalign = "fullscreen";
	self.framething.alpha = 0;
	self.framething.x = 0;
	self.framething.y = 0;
	self.framething.archived = false;
	self.framething setShader( "camara_boton", 640, 480 );
	
	if(!isDefined(self.framething))
		return;
	
	self.framething fadeOverTime( 0.75 );
	self.framething.alpha = 1;
	
	wait 0.75;
	
	if(!isDefined(self.framething))
		return;
	
	self.framething fadeOverTime( 0.75 );
	wait 0.75;
	self.framething.alpha = 0;
}

