private void Start() { currentHP = InitialHP; elapsedTimeForBeat = HealthBeatInterval; elapsedTimeForAttack = 0; heartBeatInterval = HealthBeatInterval; state = HeartStates.Health; }
public override void Update(GameTime gameTime) { if (ShouldFlash) { elapsedTime += gameTime.ElapsedGameTime; } if (elapsedTime >= showTime) { elapsedTime = TimeSpan.Zero; HeartState = FlipState(); FlipCount++; } if (FlipCount == 3) { ShouldBeRemoved = true; } base.Update(gameTime); }
public override void Update() { //Don't do anything if it's paused if (HeartState == HeartStates.Paused) { return; } double timer = FadeInTime; Color startColor = StartColor; Color endColor = EndColor; if (HeartState != HeartStates.FadeIn) { timer = FadeOutTime; startColor = EndColor; endColor = StartColor; } ElapsedTime += Time.ElapsedMilliseconds; TintColor = Color.Lerp(startColor, endColor, (float)(ElapsedTime / timer)); //Check if we're done if (ElapsedTime >= timer) { //If the heart finished fading out, it's done if (HeartState == HeartStates.FadeOut) { ReadyForRemoval = true; } TintColor = endColor; //Pause the heart so it doesn't update any longer //If it was fading in, it will stay paused until told to fade out HeartState = HeartStates.Paused; } }
/// <summary> /// Starts fading out the heart. /// </summary> public void FadeOut() { HeartState = HeartStates.FadeOut; TintColor = EndColor; ElapsedTime = 0d; }
/// <summary> /// Resets the heart, causing it to fade in again. /// </summary> public void Reset() { HeartState = HeartStates.FadeIn; TintColor = StartColor; ElapsedTime = 0d; }
public Heart(Texture2D texture, Vector2 position, Color color, Vector2 scale) : base(texture, position, color, scale) { elapsedTime = TimeSpan.Zero; showTime = TimeSpan.FromMilliseconds(500); HeartState = HeartStates.Show; }
private void Update() { if (state == HeartStates.Dead) { return; } if (state == HeartStates.Dying) { Sprite.looping = false; Sprite.Play(state.ToString()); Sprite.onAnimationFinish = delegate { GameState.CurrentState = LevelState.PlayerWon; }; state = HeartStates.Dead; } else { elapsedTimeForBeat += Time.deltaTime; if (elapsedTimeForBeat > heartBeatInterval) { elapsedTimeForBeat = 0; Sprite.Play(state.ToString()); GameState.Audio.playHearthBeat1(); } if (GameState.CurrentState == LevelState.WaveStarted) { elapsedTimeForAttack += Time.deltaTime; if (elapsedTimeForAttack > AttackInterval) { Debug.Log(string.Format("HeartBehavior: Decrementando HP -{0} (AUTO)", HealthDecrement)); elapsedTimeForAttack = 0; currentHP -= HealthDecrement; if (currentHP > MaxHealth) { GameState.CurrentState = LevelState.HeartWon; } else if (currentHP > HealthBar) { state = HeartStates.Health; heartBeatInterval = HealthBeatInterval; } else if (currentHP > SickBar) { state = HeartStates.Sick; heartBeatInterval = SickBeatInterval; } else if (currentHP > MoreSickBar) { state = HeartStates.MoreSick; heartBeatInterval = MoreSickBeatInterval; } else if (currentHP > 0) { heartBeatInterval = CriticBeatInterval; Sprite.speed = 1.5f; } else { state = HeartStates.Dying; heartBeatInterval = 0; elapsedTimeForBeat = 0; Sprite.speed = 1; } } } } }