#include "Engine.h"
#include "UTIL_Misc.h"
//================================================================================================//
						/***************
						** Render HUD **	
						****************/
//================================================================================================//
void Engine::RenderHud(float interp)
{
	glDisable(GL_TEXTURE_2D);
	UTIL_GL::GL2D::SetOrtho(640,480);
	UTIL_GL::SetBlend(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	glColor4f(0,0,0,1);
	glBegin(GL_QUADS);
	glVertex2f(0,0);
	glVertex2f(640,0);
	glColor4f(0,0,0,0);
	glVertex2f(640,64);
	glVertex2f(0,64);
	glVertex2f(0,416);
	glVertex2f(640,416);
	glColor4f(0,0,0,1);
	glVertex2f(640,480);
	glVertex2f(0,480);
	glEnd();
	glDisable(GL_BLEND);

	//force charger
	UTIL_GL::SetBlend(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	float force = (float)mPlayer.iForceCharge*2;
	if(force>200) force = 200;
	glBegin(GL_QUADS);
	if(mPlayer.iForceCharge>=100)
		glColor4f(UTIL_Misc::TimeRamp(0,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(0.25f,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(0.75f,0,(float)0,25,(float)mPlayer.iChargeFlash),0.7f);
	else
		glColor4f(0,0.25f,0.75f,0.7f);
	glVertex2f(220,430);
	if(mPlayer.iForceCharge>=100)
		glColor4f(UTIL_Misc::TimeRamp(0,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(0.5f,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(1,0,(float)0,50,(float)mPlayer.iChargeFlash),0.7f);
	else
		glColor4f(0,0.5f,1,0.7f);
	glVertex2f(220+force,430);
	glVertex2f(220+force,450);
	if(mPlayer.iForceCharge>=100)
		glColor4f(UTIL_Misc::TimeRamp(0,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(0.25f,1,(float)0,25,(float)mPlayer.iChargeFlash),
				UTIL_Misc::TimeRamp(0.75f,0,(float)0,25,(float)mPlayer.iChargeFlash),0.7f);
	else
		glColor4f(0,0.25f,0.75f,0.7f);
	glVertex2f(220,450);
	glColor4f(0,0,0,0.7f);
	glVertex2f(220+force,430);
	glVertex2f(420,430);
	glVertex2f(420,450);
	glVertex2f(220+force,450);
	glEnd();

	glColor4f(0,0,0,0.7f);
	glLineWidth(5);
	glBegin(GL_LINE_LOOP);
	glVertex2f(220,430);
	glVertex2f(420,430);
	glVertex2f(420,450);
	glVertex2f(220,450);
	glEnd();
	glLineWidth(1);

	glColor4f(1,1,1,0.75f);
	UTIL_GL::SetBlend(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	UTIL_GL::BindTexture(GL_TEXTURE_2D, imgHudBeam);
	glBegin(GL_QUADS);
	glTexCoord2f(0,0);
	glVertex2f(200,424);
	glTexCoord2f(1,0);
	glVertex2f(232,424);
	glTexCoord2f(1,1);
	glVertex2f(232,454);
	glTexCoord2f(0,1);
	glVertex2f(200,454);

	glTexCoord2f(1,0);
	glVertex2f(402,424);
	glTexCoord2f(0,0);
	glVertex2f(440,424);
	glTexCoord2f(0,1);
	glVertex2f(440,454);
	glTexCoord2f(1,1);
	glVertex2f(402,454);

	glTexCoord2f(1,0);
	glVertex2f(232,424);
	glTexCoord2f(1,0);
	glVertex2f(402,424);
	glTexCoord2f(1,1);
	glVertex2f(402,454);
	glTexCoord2f(1,1);
	glVertex2f(232,454);

	glEnd();
	glDisable(GL_BLEND);
	glDisable(GL_TEXTURE_2D);
	glColor4f(1,1,1,1);
	//weapon name
	mFont1.SetBlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	mFont1.SetScale(0.5f,0.5f);
	mFont1.SetAlignment(ALIGN_CENTER);
	mFont1.SetColor(1,1,0,0.75f);
	mFont1.Print("FORCE METER:",320,430);
	mFont1.SetScale(1,0.5f);
	mFont1.SetColor(1,1,1,1);
	if(mPlayer.bHasOrb)
	{
		switch(mPlayer.mOrb.iWeaponType)
		{
		case 0:	mFont1.Print("PLASMA",320,452); break;
		case 1:	mFont1.Print("RAIL",320,452); break;
		case 2:	mFont1.Print("PULSE",320,452); break;
		case 3:	mFont1.Print("MAGMA",320,452); break;
		}
	}
	char sz[32];
	mFont1.SetScale(0.5f,0.5f);
	mFont1.SetAlignment(ALIGN_LEFT);
	mFont1.Print("SCORE:",100, 16);
	sprintf(sz,"TOP:");
	mFont1.Print(sz,320,16);
	sprintf(sz,"LIVES");
	mFont1.Print(sz,10,16);

	mFont2.SetScale(0.5f,0.5f);
	mFont2.SetColor(1,1,1,1);
	mFont2.SetAlignment(ALIGN_LEFT);
	sprintf(sz,"%i",mPlayer.iLives);
	mFont2.Print(sz,60,16);
	sprintf(sz,"%.8i",mPlayer.iScore);
	mFont2.Print(sz,155,16);
	sprintf(sz,"%.8i %s",iHiScore[0],szHiScore[0]);
	mFont2.Print(sz,355,16);

}