public override void Draw(SpriteBatch spriteBatch) { if (Active) { SpriteEffects flip = CurrentEntityStates.Contains(EntityStates.Left) ? SpriteEffects.FlipHorizontally : SpriteEffects.None; Animations[currentAnimation].Draw(spriteBatch, flip); } }
private Vector2 GetNextPosition(GameTime gameTime) { if (CurrentEntityStates.Contains(EntityStates.Boost)) { Speed *= Vector2.UnitX; } Vector2 nextPosition = Position + Speed * (float)gameTime.ElapsedGameTime.TotalMilliseconds; return(nextPosition); }
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; } }
private void ChangeAnimation() { if (!CurrentEntityStates.Contains(EntityStates.Move)) { currentAnimation = "default"; } if (CurrentEntityStates.Contains(EntityStates.Move)) { currentAnimation = Animations.ContainsKey("move") ? "move" : currentAnimation; } if (CurrentEntityStates.Contains(EntityStates.OnAir) || CurrentEntityStates.Contains(EntityStates.Boost)) { currentAnimation = Animations.ContainsKey("onAir") ? "onAir" : currentAnimation; } if (CurrentEntityStates.Contains(EntityStates.Hit)) { currentAnimation = Animations.ContainsKey("hurt") ? "hurt" : currentAnimation; } if (CurrentEntityStates.Contains(EntityStates.Dead)) { currentAnimation = Animations.ContainsKey("dead") ? "dead" : currentAnimation; } }
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); } } }