Ejemplo n.º 1
0
void handleKeyboard(unsigned char key, int x, int y)
{
	switch (key)
	{
	case 033:		//Escape
		exit(EXIT_SUCCESS);
		break;
	case 040:		//Space
		HitBall(GolfBall, BallDirAngle, GolfPower);
		break;
	case 'a':
		if (BallDirAngle <= 0.0)
			BallDirAngle = 360.0f;
		BallDirAngle -= 8.0f;
		break;
	case 'd':
		if (BallDirAngle >= 360.0)
			BallDirAngle = 0.0f;
		BallDirAngle += 8.0f;
		break;
	case 'w':
		GolfPower += powerIncrements;
		if (GolfPower >= 0.1)
			GolfPower = 0.1f;
		break;
	case 's':
		GolfPower -= powerIncrements;
		if (GolfPower <= 0.025)
			GolfPower = 0.025;
		break;
	case 'r':
		GolfBall.ReturnTo();
		break;
	case 't':		//Top view
		cameraView = TOPVIEW;
		break;
	case 'f':		//Free look
		cameraView = FREELOOK;
		break;
	case 'g':		//Third Person View
		cameraView = THIRDPOV;
		break;
	case 'p':
		GolfBall.Model.Coordinate.x = 1.5;
		break;
	}
}
Ejemplo n.º 2
0
void Player::update(float deltaTime)
{
	stringstream message;
	if (_doubleAttack)
	{
		message << "Power*2";
	}
	if (_invincible)
	{
		message << "Invincible";
	}
	_ballDispencer->DisplayText(message.str());

	_timeSinceHit += deltaTime;
	_stunLockTimer += deltaTime;
	_swingCooldownTimer += deltaTime;

	if (AnimationHelper::AnimationFinished(_sprite))
	{
		AnimationHelper::Animate(_sprite, "Idle");
	}

	if (IsDazed())
	{
		float recoveryTime = _veryDazed ? Settings::playerLongDazeRecoveryTime : Settings::playerDazeRecoveryTime;
		if (_timeSinceHit >= recoveryTime)
		{
			EndDaze();
		}
	}
	// How long invincible lasts for
	// If invincible is true
	if (_invincible)
	{
		// How much time has passed is added to invincibleTime
		_invincibleTime += deltaTime; 

		// If invincibleTime is greater than how long powerups last for
		if (_invincibleTime >= Settings::powerUpTime)
		{
			_invincible = false;
		}
	}
	if (_doubleAttack)
	{
		_doubleAttackTime += deltaTime;

		if (_doubleAttackTime >= Settings::powerUpTime)
		{
			_doubleAttack = false;
		}
	}

	if (!IsDazed())
	{
		//if mid swing
		if (_swingCooldownTimer <= Settings::playerSwingDuration)
		{
			if (!_swingHasHitYet)
			{
				if (_swingCooldownTimer >= Settings::playerSwingHitDelay)
				{
					HitBall();
					_swingHasHitYet = true;
				}
			}
		}
	}
}