Example #1
0
        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;
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public override void Damage(DamageTakenEventArgs e)
        {
            var realDamage = IsShieldActive ? e.Damage * Shield.Efficiency : e.Damage;

            base.Damage(new DamageTakenEventArgs(realDamage, e.DamageTakenPoint));
        }
Example #4
0
        public virtual void Damage(DamageTakenEventArgs e)
        {
            Health -= e.Damage;

            var handler = DamageTaken;
            if (handler != null)
            {
                handler(this, e);
            }
        }