Ejemplo n.º 1
0
void Game::CheckProjectiles(bool p)
{
	if (projectiles[p].size() > 0)
	{
		//check if two projectiles collide
		if (CheckProjectilesCollision(player[!p], p, 0))
		{
			bool playtwo = !p;
			if (player[playtwo]->getPrevMovement() == 5)
			{
				MakeHadoken(playtwo);
			}
			else
			{
				g_pExplosionManager->Create(projectiles[p].at(0));
				player[playtwo]->subtractFromLife(10);
				CheckLife(playtwo);
			}

			RemoveProjectile(p, 0);
		}
		else
		{
			if (projectiles[p].at(0)->m_Y == projectiles[p].at(0)->getEndY())
			{
				RemoveProjectile(p, 0);
			}
		}
	}
}
Ejemplo n.º 2
0
void Game::DBZWin(bool isAI)
{
	g_pExplosionManager->Create(projectiles[isAI].at(0));
	RemoveProjectile(PLAYER_ONE, 0);
	RemoveProjectile(PLAYER_TWO, 0);
	DBZBlast = false;

	player[isAI]->subtractFromLife(45);
	CheckLife(isAI);
}
Ejemplo n.º 3
0
bool Game::HadokenOnHadoken()
{
	if (projectiles[PLAYER_ONE].size() > 0 && projectiles[PLAYER_TWO].size() > 0)
	{
		if (CheckProjectilesCollision(projectiles[PLAYER_TWO].back(), PLAYER_ONE, 0))
		{
			projectiles[PLAYER_ONE].back()->m_AnchorY = (float)(PLAYER_ONE);
			projectiles[PLAYER_TWO].back()->m_AnchorY = (float)(PLAYER_TWO);

			//projectiles[PLAYER_ONE].back()->m_Y += projectiles[PLAYER_TWO].back()->getWidth();
			InitialiseHadoken(projectiles[PLAYER_ONE].back(), PLAYER_ONE);
			projectiles[PLAYER_TWO].back()->m_Y = projectiles[PLAYER_ONE].back()->m_Y;
			InitialiseHadoken(projectiles[PLAYER_TWO].back(), PLAYER_TWO);


			RemoveProjectile(PLAYER_ONE, 0);
			RemoveProjectile(PLAYER_TWO, 0);


			player[PLAYER_ONE]->setPrevMovement(-1);
			player[PLAYER_TWO]->setPrevMovement(-1);


			MessageLabel->m_Text = "Show Down";
			MessageLabel->m_Alpha = 100.0f;
			m_Tweener.Tween(3.0f,
				FLOAT, &MessageLabel->m_Alpha, 0.0f,
				END);
			DBZBlast = true;
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}
Ejemplo n.º 4
0
bool Game::CheckHadokenRelease()
{
	if(player[PLAYER_ONE]->getPrevMovement() == 4)
	{
		//explode hadoken
		if (projectiles[PLAYER_ONE].size() > 0)
		{
			g_pExplosionManager->Create(projectiles[PLAYER_ONE].at(0));
			RemoveProjectile(PLAYER_ONE, 0);
		}
		return true;
	}
}
Ejemplo n.º 5
0
void CQuadField::MovedProjectile(CProjectile* p)
{
    if (!p->synced)
        return;
    // hit-scan projectiles do NOT move!
    if (p->hitscan)
        return;

    const CProjectile::QuadFieldCellData& qfcd = p->GetQuadFieldCellData();

    const int2 oldCellCoors = qfcd.GetCoor(0);
    const int2 newCellCoors = {
        std::max(0, std::min(int(p->pos.x / quadSizeX), numQuadsX - 1)),
        std::max(0, std::min(int(p->pos.z / quadSizeZ), numQuadsZ - 1))
    };

    if (newCellCoors != oldCellCoors) {
        RemoveProjectile(p);
        AddProjectile(p);
    }
}