//public void Confuse() //{ // ThinkCloud.Animation.SetFrame(0); // ThinkCloud.IsVisible = true; //} //public override void Initialize(Game game, Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch, ICamera2D camera) //{ // if (ThinkCloud != null) // { // ThinkCloud.Initialize(game, spriteBatch, camera); // } // base.Initialize(game, spriteBatch, camera); //} //public override void Update(GameState gameState, GameTime gameTime) //{ // UpdateThinkCloud(gameTime); // base.Update(gameState, gameTime); //} //private void UpdateThinkCloud(GameTime gameTime) //{ // if (ThinkCloud == null) // { // return; // } // if (ThinkCloud.Animation.HasFinishedPlay) // { // ThinkCloud.IsVisible = false; // } // ThinkCloud.Update(gameTime); //} //public override void Draw(GameTime gameTime) //{ // if (ThinkCloud != null) // { // ThinkCloud.Draw(gameTime); // } // base.Draw(gameTime); //} public virtual void Damage(DamageTakenEventArgs e) { Health -= e.Damage; var handler = DamageTaken; if (handler != null) { handler(this, e); } }
private void OnDamageTaken(IAlive source, DamageTakenEventArgs e) { _totalDamage += e.Damage; while (_totalDamage > DamageEmissionThreshold && DamageParticleGenerator != null) { var particle = DamageParticleGenerator(); var x = Random.Next(40, WorldCollisionRectangle.Width - 40); var y = Random.Next(40, WorldCollisionRectangle.Height - 40); particle.WorldPosition = new Vector2(WorldCollisionRectangle.X + x, WorldCollisionRectangle.Y + y); EmitParticle(particle); _totalDamage -= DamageEmissionThreshold; } }
private void OnNanobotDamage(IAlive sender, DamageTakenEventArgs e) { var damageAnimations = sender.ToDamageAnimation(); foreach (var damageAnimation in damageAnimations) { damageAnimation.Finished += OnAnimationFinished; damageAnimation.WorldPosition = e.DamageTakenPoint; AddLevelObject(damageAnimation); damageAnimation.Initialize(_game, _game.Services.GetService<SpriteBatch>(), _game.Services.GetService<GameState>().Camera); } }
public override void Damage(DamageTakenEventArgs e) { var realDamage = IsShieldActive ? e.Damage * Shield.Efficiency : e.Damage; base.Damage(new DamageTakenEventArgs(realDamage, e.DamageTakenPoint)); }