#include	"SpaceShooter.h"

using namespace AGK;

//void	CreatePlayer()
//{
//	g_iPlayerShip = agk::CreateSprite(agk::LoadImage("space/playership.png"));
//
//	agk::SetSpriteUVBorder(g_iPlayerShip, 1);
//
//	agk::SetImageWrapU(g_iPlayerShip, 0);
//	agk::SetImageWrapV(g_iPlayerShip, 0);
//
//	for (int i = 0; i < 10; i++)
//	{
//		g_Bullets[i].iID = 0;
//		g_Bullets[i].iExplosion = 0;
//	}
//
//	ResetPlayer();
//
//	g_iPlayerWeapon = agk::LoadImage("space/laser.png");
//
//	ResetBullets();
//}
//
//void	ResetPlayer()
//{
//	agk::SetSpritePosition(g_iPlayerShip, 200, 200);
//
//	agk::SetSpriteVisible(g_iPlayerShip, 1);
//
//	if (agk::GetParticlesExists(g_iPlayerEngine) == 1)
//	{
//		agk::DeleteParticles(g_iPlayerEngine);
//	}
//
//	g_iPlayerEngine = agk::CreateParticles(200, 208);
//
//	agk::SetParticlesImage(g_iPlayerEngine, 4);
//	agk::SetParticlesStartZone(g_iPlayerEngine, 0, 0, 0, 0);
//	agk::SetParticlesDirection(g_iPlayerEngine, -50, 0);
//	agk::SetParticlesLife(g_iPlayerEngine, 0.3f);
//	agk::SetParticlesSize(g_iPlayerEngine, 16);
//	agk::SetParticlesAngle(g_iPlayerEngine, 80);
//	agk::SetParticlesFrequency(g_iPlayerEngine, 60);
//	agk::AddParticlesColorKeyFrame(g_iPlayerEngine, 0.0f, 221, 136, 5, 255);
//	agk::AddParticlesColorKeyFrame(g_iPlayerEngine, 0.3f, 221, 136, 5, 0);
//
//	if (agk::GetParticlesExists(g_iPlayerExplosion) == 1)
//	{
//		agk::DeleteParticles(g_iPlayerExplosion);
//	}
//
//	g_iPlayerExplosion = agk::CreateParticles(-1000, -1000);
//}
//
//void	ResetBullets()
//{
//	for (int i = 0; i < 10; i++)
//	{
//		if (agk::GetSpriteExists(g_Bullets[i].iID) == 0)
//		{
//			g_Bullets[i].iID = agk::CreateSprite(g_iPlayerWeapon);
//		}
//
//		if (agk::GetParticlesExists(g_Bullets[i].iExplosion) == 1)
//		{
//			agk::DeleteParticles(g_Bullets[i].iExplosion);
//		}
//
//		agk::SetSpritePosition(g_Bullets[i].iID, -100.0f, -100.0f);
//		agk::SetSpriteColorAlpha(g_Bullets[i].iID, 0);
//
//		g_Bullets[i].iActive = 0;
//		g_Bullets[i].fLife = 0;
//	}
//}
//
//void	HidePlayer()
//{
//	agk::SetSpriteVisible(g_iPlayerShip, 0);
//	agk::SetParticlesVisible(g_iPlayerEngine, 0);
//}
//
//void	ShowPlayer()
//{
//	agk::SetSpriteVisible(g_iPlayerShip, 1);
//	agk::SetParticlesVisible(g_iPlayerEngine, 1);
//}
//
//void	UpdatePlayer()
//{
//	switch (g_iPlayerState)
//	{
//	case 0:
//		MovePlayer();
//		CheckPlayerWithScenery();
//		CheckPlayerWithAliens();
//		FireBullets();
//		UpdateBullets();
//		CheckBulletsWithAliens();
//		break;
//
//	case 1:
//		DestroyPlayer();
//		break;
//
//	}
//}
//
//void	MovePlayer()
//{
//	float x = 1.0f;
//	float y = 0.0;
//
//	if (agk::GetViewOffsetX() > 15300)
//	{
//		HidePlayer();
//		g_iGameState = 2;
//	}
//
//	agk::SetViewOffset(agk::GetViewOffsetX() + x, 0);
//
//	float fScreenX = agk::WorldToScreenX(agk::GetSpriteX(g_iPlayerShip));
//
//	float x1 = agk::GetDirectionX();
//	float y1 = agk::GetDirectionY();
//
//	x = x + x1 * 2.0f;
//	y = y + y1 * 2.0f;
//
//	if (fScreenX > 500.0f && x1 > 0.0f)
//	{
//		x = 1.0;
//	}
//
//	if (fScreenX < 20.0f && x1 < 0.0f)
//	{
//		x = 1.0f;
//	}
//
//	agk::SetSpritePosition(g_iPlayerShip, agk::GetSpriteX(g_iPlayerShip) + x, agk::GetSpriteY(g_iPlayerShip) + y);
//	agk::SetParticlesPosition(g_iPlayerEngine, agk::GetParticlesX(g_iPlayerEngine) + x, agk::GetParticlesY(g_iPlayerEngine) + y);
//}

//void	CheckPlayerWithScenery()
//{
//	for (int i = 0; i < g_iSceneryCount; i++)
//	{
//		if (agk::GetSpriteExists(g_iScenery[i]) == 1)
//		{
//			if (agk::GetSpriteCollision(g_iPlayerShip, g_iScenery[i]) == 1)
//			{
//				KillPlayer();
//				agk::PlaySound(5);
//				break;
//			}
//		}
//	}
//}
//
//void	CheckPlayerWithAliens()
//{
//	for (int j = 0; j < 10; j++)
//	{
//		if (agk::GetSpriteCollision(g_iPlayerShip, g_Aliens[j].iSprite) == 1)
//		{
//			float x = agk::GetSpriteX(g_Aliens[j].iSprite);
//			float y = agk::GetSpriteY(g_Aliens[j].iSprite);
//
//			ExplodeAlien(x, y);
//
//			agk::SetSpritePosition(g_Aliens[j].iSprite, -300, -300);
//			agk::SetParticlesPosition(g_Aliens[j].iEngine, -300, -300);
//
//			KillPlayer();
//
//			agk::PlaySound(5);
//			break;
//		}
//	}
//}
//
//void	FireBullets()
//{
//	// fire a bullet
//	g_fPlayerShoot = g_fPlayerShoot + 0.1f;
//
//	if (g_fPlayerShoot >= 2.0f)
//	{
//		for (int i = 0; i < 10; i++)
//		{
//			if (g_Bullets[i].iActive == 0)
//			{
//				agk::PlaySound(1);
//
//				agk::SetSpritePosition(g_Bullets[i].iID, agk::GetSpriteX(g_iPlayerShip) + 28, agk::GetSpriteY(g_iPlayerShip));
//				g_Bullets[i].iActive = 1;
//				//	goto FireBulletsEnd;	<-- bad programming style ;)
//				break; //	<-- better;
//			}
//		}
//
//	//FireBulletsEnd:
//		g_fPlayerShoot = 0.0;
//	}
//}
//
//void	UpdateBullets()
//{
//	for (int i = 0; i < 10; i++)
//	{
//		if (g_Bullets[i].iActive == 1)
//		{
//			agk::SetSpritePosition(g_Bullets[i].iID, agk::GetSpriteX(g_Bullets[i].iID) + 4.5f, agk::GetSpriteY(g_Bullets[i].iID));
//			g_Bullets[i].fLife = g_Bullets[i].fLife + 0.1f;
//
//			if (g_Bullets[i].fLife < 10.0f)
//			{
//				if (agk::GetSpriteColorAlpha(g_Bullets[i].iID) < 200)
//				{
//					agk::SetSpriteColorAlpha(g_Bullets[i].iID, agk::GetSpriteColorAlpha(g_Bullets[i].iID) + 32);
//				}
//			}
//
//			if (g_Bullets[i].fLife >= 1.5f)
//			{
//				if (agk::GetSpriteColorAlpha(g_Bullets[i].iID) > 32)
//				{
//					agk::SetSpriteColorAlpha(g_Bullets[i].iID, agk::GetSpriteColorAlpha(g_Bullets[i].iID) - 32);
//				}
//				else
//				{
//					agk::SetSpriteColorAlpha(g_Bullets[i].iID, 0);
//				}
//			}
//
//			if (g_Bullets[i].fLife > 6.0f)
//			{
//				agk::SetSpriteColorAlpha(g_Bullets[i].iID, 0);
//				agk::SetSpritePosition(g_Bullets[i].iID, -100.0f, -100.0f);
//				g_Bullets[i].fLife = 0.0f;
//				g_Bullets[i].iActive = 0;
//			}
//		}
//	}
//}
//
//void	KillPlayer()
//{
//	agk::SetSpriteVisible(g_iPlayerShip, 0);
//	agk::SetParticlesVisible(g_iPlayerEngine, 0);
//	agk::SetParticlesPosition(g_iPlayerExplosion, agk::GetSpriteX(g_iPlayerShip) + 22, agk::GetSpriteY(g_iPlayerShip));
//	agk::SetParticlesImage(g_iPlayerExplosion, 4);
//	agk::SetParticlesStartZone(g_iPlayerExplosion, 0.0f, 0.0f, 0.0f, 0.0f);
//	agk::SetParticlesDirection(g_iPlayerExplosion, -32.0f, -32.0f);
//	agk::SetParticlesLife(g_iPlayerExplosion, 2.0f);
//	agk::SetParticlesSize(g_iPlayerExplosion, 64);
//	agk::SetParticlesAngle(g_iPlayerExplosion, 360);
//	agk::SetParticlesFrequency(g_iPlayerExplosion, 120);
//	agk::AddParticlesColorKeyFrame(g_iPlayerExplosion, 0.0f, 121, 1, 255, 255);
//	agk::AddParticlesColorKeyFrame(g_iPlayerExplosion, 2.0f, 1, 252, 255, 0);
//	agk::AddParticlesForce(g_iPlayerExplosion, 1.1f, 2.0f, 0.0f, 250.0f);
//	agk::AddParticlesForce(g_iPlayerExplosion, 1.5f, 2.0f, -250.0f, 0.0f);
//	agk::SetParticlesMax(g_iPlayerExplosion, 250);
//
//	DestroyAllBullets();
//
//	g_iLives--;
//	g_iPlayerState = 1;
//}
//
//void	DestroyAllBullets()
//{
//	for (int i = 0; i < 10; i++)
//	{
//		if (g_Bullets[i].iActive == 1)
//		{
//			float fX = agk::GetSpriteX(g_Bullets[i].iID);
//			float fY = agk::GetSpriteY(g_Bullets[i].iID);
//
//			agk::SetSpritePosition(g_Bullets[i].iID, -100.0f, -100.0f);
//
//			int explode = agk::CreateParticles(fX, fY);
//
//			g_Bullets[i].iExplosion = explode;
//
//			agk::SetParticlesImage(explode, 4);
//			agk::SetParticlesStartZone(explode, -20, 20, -20, 20);
//			agk::SetParticlesDirection(explode, 8, 8);
//			agk::SetParticlesLife(explode, 2.0);
//			agk::SetParticlesSize(explode, 16);
//			agk::SetParticlesAngle(explode, 360);
//			agk::SetParticlesFrequency(explode, 120);
//			agk::AddParticlesColorKeyFrame(explode, 0.0f, 120, 0, 255, 255);
//			agk::AddParticlesColorKeyFrame(explode, 2.0f, 255, 100, 255, 0);
//
//			agk::AddParticlesForce(explode, 1.5f, 2.0f, 100, 100);
//			agk::AddParticlesForce(explode, 1.5f, 2.0f, 250, 0);
//
//			agk::SetParticlesMax(explode, 64);
//		}
//	}
//}
//
//void	DestroyPlayer()
//{
//	if (agk::GetParticlesMaxReached(g_iPlayerExplosion) && g_iDelay == 0)
//	{
//		g_iDelay = int(agk::Timer());
//	}
//
//	if (g_iDelay != 0 && (agk::Timer() + g_iDelay + 2) != 0)
//	{
//		agk::SetViewOffset(0, 0);
//
//		ResetPlayer();
//		ResetBullets();
//		ResetAliens();
//
//		g_iDelay = 0;
//		g_iPlayerState = 0;
//
//		g_iScoreTarget = 0;
//		g_iScore = 0;
//	}
//
//	if (g_iLives == 0)
//	{
//		g_iDelay = 0;
//		g_iGameState = 2;
//	}
//}
//
