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; } }
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; } } } } }