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)); }
public virtual void Damage(DamageTakenEventArgs e) { Health -= e.Damage; var handler = DamageTaken; if (handler != null) { handler(this, e); } }