/// <summary> /// Update function for Warming up: Transition state /// </summary> private void UpdateTransitionState() { SpinTheArrow(); if (mSpinRate < kMaxSpinRate) { mSpinRate += kDeltaSpin; } else { // Transition to Spin state mArrowState = SpinningArrowState.ArrowSpinning; } }
/// <summary> /// Update function to track the hero. If hero gets too far, transit back to /// "warm-up" state. /// </summary> /// <param name="toHero">vector point to the hero.</param> private void UpdatePointToHero(Vector2 toHero) { float dist = toHero.Length(); if (dist < kHeroTriggerDistance) { FrontDirection = toHero; } else { // Go back to TransitionState for spinning up the arrow mArrowState = SpinningArrowState.ArrowTransition; } }
/// <summary> /// Update function for steady state spinning, capable of detecting the hero /// </summary> /// <param name="hero">if hero gets too close, hero will be tracked</param> private void UpdateSpinningState(TexturedPrimitive hero) { SpinTheArrow(); // Check for hero ... Vector2 toHero = hero.Position - Position; if (toHero.Length() < kHeroTriggerDistance) { // Transition to PointsToHeroState mSpinRate = 0f; mArrowState = SpinningArrowState.ArrowPointsToHero; } }
/// <summary> /// Update function for Warming up: Transition state /// </summary> private void UpdateTransitionState() { SpinTheArrow(); if (mSpinRate < kMaxSpinRate) { mSpinRate += kDeltaSpin; } else { // Transition to Spin state mArrowState = SpinningArrowState.ArrowSpinning; mImage = Game1.sContent.Load <Texture2D>("RightArrow"); } }
/// <summary> /// Update function to track the hero. If hero gets too far, transit back to /// "warm-up" state. /// </summary> /// <param name="toHero">vector point to the hero.</param> private void UpdatePointToHero(Vector2 toHero) { float dist = toHero.Length(); if (dist < kHeroTriggerDistance) { FrontDirection = toHero; } else { // Go back to TransitionState for spinning up the arrow mArrowState = SpinningArrowState.ArrowTransition; mImage = Game1.sContent.Load <Texture2D>("TransientArrow"); } }