public void LoseLife(int damage) { if (CurrentEntityStates.Contains(EntityStates.Hit)) { return; } CurrentEntityStates.Add(EntityStates.Hit); HitSound.Play(); Health -= damage; if (Health <= 0) { CurrentEntityStates.Add(EntityStates.Dead); CurrentEntityStates.Remove(EntityStates.Hit); Health = 0; } }
public void ApplyAcceleration(GameTime gameTime, Vector2 acceleration) { if (CurrentEntityStates.Contains(EntityStates.Boost)) { Speed += Vector2.UnitX * acceleration / 300 * (float)gameTime.ElapsedGameTime.TotalMilliseconds; } else { Speed += Vector2.UnitX * acceleration / 400 * (float)gameTime.ElapsedGameTime.TotalMilliseconds; } if (acceleration.Y != 0 && !CurrentEntityStates.Contains(EntityStates.OnAir)) { Speed = Speed * Vector2.UnitX - Vector2.UnitY * 0.65f; CurrentEntityStates.Add(EntityStates.OnAir); JumpSound.Play(); } if (!CurrentEntityStates.Contains(EntityStates.Boost)) { ApplyGravity(gameTime); } ApplyFriction(gameTime); }
public void Update(GameTime gameTime) { if (CurrentEntityStates.Contains(EntityStates.Dead)) { bool dead = StatesTime[EntityStates.Dead].Update(gameTime); if (dead) { Active = false; } } if (CurrentEntityStates.Contains(EntityStates.Hit)) { bool hit = StatesTime[EntityStates.Hit].Update(gameTime); if (hit) { CurrentEntityStates.Remove(EntityStates.Hit); } } if (CurrentEntityStates.Contains(EntityStates.Recharge)) { bool recharge = StatesTime[EntityStates.Recharge].Update(gameTime); if (recharge) { CurrentEntityStates.Remove(EntityStates.Recharge); } } if (CurrentEntityStates.Contains(EntityStates.Boost)) { bool boost = StatesTime[EntityStates.Boost].Update(gameTime); if (boost) { CurrentEntityStates.Remove(EntityStates.Boost); CurrentEntityStates.Add(EntityStates.Recharge); } } }