Ejemplo n.º 1
0
void Camera::Reset()
{
	m_vPrevTargetPos = m_vSpanVel = m_vPos = DJVector2(0.0f, 200.0f);
	m_vDir = DJVector2(0.0f);
	m_fShakingTime = 1.0f;
	m_fPaddingOffsetX = 0.0f;
}
Ejemplo n.º 2
0
void Player::OnUpdate()
{
	DJVector2 vPos = m_pSprite->GetPosition();

	// Move player in the direction we are walking
	vPos += m_vDir * pTheApp->GetDeltaAppTime() * 50.0f; // Move 100 pixel

	// Check that the player does not walk outside of the screen	
	if (vPos[0] < 0.0f)						{ vPos[0] = 0.0f; m_fTimer = 0.0f; }
	if (vPos[1] < 0.0f)						{ vPos[1] = 0.0f; m_fTimer = 0.0f; }
	if (vPos[0]  > (float)g_nScreenWidth)	{ vPos[0] = (float)g_nScreenWidth ; m_fTimer = 0.0f; }
	if (vPos[1]  > (float)g_nScreenHeight)	{ vPos[1] = (float)g_nScreenHeight ; m_fTimer = 0.0f; }

	//Check if player go into a cage
	if (InCage(cage1) || InCage(cage2)) {
		m_fTimer = 0.0f;
	}

	m_fTimer -= pTheApp->GetDeltaAppTime();

	// Time to change direction?
	if (m_fTimer <= 0.0f)
	{
		// Randomize direction
		m_vDir = DJVector2(1,0);
		m_vDir = m_vDir.RotatedZ(djRandomGetFloat() * DJ_2PIf);

		// Choose the sprite animation that is mostly in the right direction
		if ((m_vDir % DJVector2(1,0) > 0.707f))
			m_nDir = 3;
		else if ((m_vDir % DJVector2(-1,0) > 0.707f))
			m_nDir = 2;
		else if ((m_vDir % DJVector2(0,1) > 0.707f))
			m_nDir = 1;
		else
			m_nDir = 0;

		// Play animation on the sprite
		m_pSprite->PlayAnimation(g_pAnimations[type][m_nDir]);

		// Randomize timer before changing direction
		m_fTimer = djRandomGetFloat() * 4.0f;
	}

	// Set new position
	m_pSprite->SetPosition(vPos);

	// Set the sprite sorting value to the Y position of the sprite
	m_pSprite->SetSortValue(m_pSprite->GetPosition()[1]);
}
Ejemplo n.º 3
0
Camera::Camera()
{
	m_vPos = DJVector2(0.0f);
	m_vPrevTargetPos = DJVector2(0.0f);
	m_vDir = DJVector2(0.0f);
	m_fShakingTime = 1.0f;
	m_fPaddingOffsetX = 0.0f;
	m_fPaddingDesiredOffsetX = 0.0f;
	m_fPaddingSpeedXFactor = 0.0f;

	m_fPaddingOffsetY = 0.0f;
	m_fPaddingDesiredOffsetY = 0.0f;
	m_fPaddingSpeedYFactor = 0.0f;

	DJTrace("%s()", __FUNCTION__);
}
Ejemplo n.º 4
0
void Camera::OnUpdate(float fDeltaTime, const DJVector2 &vTargetPos, const DJVector2 &vYRestriction)
{
	DJVector2 vCalculatedTargetPos(vTargetPos);
	if (vCalculatedTargetPos[1] - (RUNNER_PADDING.e[1] * (float)g_nScreenHeight) < vYRestriction[0])
		vCalculatedTargetPos[1] = vYRestriction[0] + (RUNNER_PADDING.e[1] * (float)g_nScreenHeight);
	if (vCalculatedTargetPos[1] + ((1.0f - RUNNER_PADDING.e[1]) * (float)g_nScreenHeight) > vYRestriction[1])
		vCalculatedTargetPos[1] = vYRestriction[1] - ((1.0f - RUNNER_PADDING.e[1]) * (float)g_nScreenHeight);

	DJVector2 vVel = (vCalculatedTargetPos - m_vPrevTargetPos) / fDeltaTime;
	DJVector2 vVelDiff = vVel - m_vSpanVel;
	vVelDiff = vVelDiff & DJVector2(1.0f, 1.0f);
	m_vSpanVel[0] += vVelDiff[0] * (fDeltaTime / CAMERA_VELOCITY_CATCHUP_TIME.e[0]);
	m_vSpanVel[1] += vVelDiff[1] * (fDeltaTime / CAMERA_VELOCITY_CATCHUP_TIME.e[1]);
	DJVector2 vDist = (vCalculatedTargetPos - m_vPos);
	vDist = vDist & DJVector2(1.0f, 0.3f);
	m_vPos += m_vSpanVel * fDeltaTime;
	m_vPos[0] += vDist[0] * (fDeltaTime / CAMERA_POSITION_CATCHUP_TIME[0]);
	m_vPos[1] += vDist[1] * (fDeltaTime / CAMERA_POSITION_CATCHUP_TIME[1]);
	//m_vPos += vDist * (fDeltaTime / CAMERA_CATCHUP_TIME);
	m_vPrevTargetPos = vCalculatedTargetPos;

	m_fShakingTime += fDeltaTime;
	if(m_fShakingTime < 1.0f)
	{
		float fTran = m_fShakingTime * 20.0f;
		DJVector2 vTran(5.0f * g_vScaleScreen[0] * djSin(fTran * DJ_PIf), 5.0f * g_vScaleScreen[1] * djSin(fTran * DJ_PIf));
		vTran = vTran & m_vDir;
		if (fTran > 1.0f)
		{
			fTran = 1.0f;
			vTran = DJVector2(0.0f);
		}
		DJMatrix2D tmmm;
		tmmm = theSpriteEngine.GetGlobalTransform();
		tmmm.SetTranslation(vTran);
		theSpriteEngine.SetGlobalTransform(tmmm);
	}

	// Padding
	m_fPaddingOffsetX += djStepToDesiredValue(m_fPaddingOffsetX, m_fPaddingDesiredOffsetX, fDeltaTime * m_fPaddingSpeedXFactor);

	if(m_vPos[1] < vYRestriction[1] / 1.5f)
		m_fPaddingOffsetY += djStepToDesiredValue(m_fPaddingOffsetY, 0.075f, fDeltaTime * 0.01f);
	else
		m_fPaddingOffsetY += djStepToDesiredValue(m_fPaddingOffsetY, 0.0f, fDeltaTime * 0.01f);
		//m_fPaddingOffsetY = 0.075f;
}
Ejemplo n.º 5
0
Player::Player(PLAYER_TYPE pt )
{
	type = pt;
	SetStopAnimation(DJFALSE);

	// Create a sprite we can later draw
	m_pSprite = new DJ2DSprite;
	// Make the sprite magnify with a blur instead of pixelated
	m_pSprite->SetFilter(DJ2DSprite::filterLinear);
	// Set the sprite to the center of the screen
	//m_pSprite->SetPosition((float)g_nScreenWidth * djRandomGetFloat(), (float)g_nScreenHeight * djRandomGetFloat());
	if (type == RED) { //RED is always from the middle of top
		m_pSprite->SetPosition((float)g_nScreenWidth/2,0);
	} else { // BLACK is always from the middle of bottom
		m_pSprite->SetPosition((float)g_nScreenWidth/2,	g_nScreenHeight);
	}

	// Set the sprite sorting value to the Y position of the sprite
	m_pSprite->SetSortValue(m_pSprite->GetPosition()[0]);

	// Randomize direction
	m_vDir = DJVector2(1,0); // Horizontal
	m_vDir = m_vDir.RotatedZ(djRandomGetFloat() * DJ_2PIf);

	// Choose the sprite animation that is mostly in the right direction
	if ((m_vDir % DJVector2(1,0) > 0.707f))
		m_nDir = 3;
	else if ((m_vDir % DJVector2(-1,0) > 0.707f))
		m_nDir = 2;
	else if ((m_vDir % DJVector2(0,1) > 0.707f))
		m_nDir = 1;
	else
		m_nDir = 0;

	// Randomize timer before changing direction
	m_fTimer = djRandomGetFloat() * 4.0f;

	// Play animation on the sprite
	m_pSprite->PlayAnimation(g_pAnimations[type][m_nDir]);
	// Add sprite to active node list in the sprite engine to automatically update the animations on it
	theSpriteEngine.AddActiveNode(m_pSprite);

	DJ2DLayer* pLayer = theSpriteEngine.GetLayer(LAYER_SPRITES);
	pLayer->AddNode(m_pSprite);
}
Ejemplo n.º 6
0
DJMatrix2D Camera::GetTransform(const DJVector2 &vDriftRatio)
{
	return DJMatrix2D::Translate(DJVector2(-m_vPos.e[0] + ((RUNNER_PADDING.e[0] + m_fPaddingOffsetX) * (float)g_nScreenWidth),
										   -m_vPos.e[1] + ((RUNNER_PADDING.e[1] + m_fPaddingOffsetY) * (float)g_nScreenHeight))
								 & vDriftRatio);
}