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

            base.Damage(new DamageTakenEventArgs(realDamage, e.DamageTakenPoint));
        }