Exemple #1
0
        private void Explode()
        {
            if (Alive)
            {
                Vector2 explosionPoint = body.Position;
                world.RemoveBody(body);
                world.ProcessChanges();
                body = null;

                CuttingTools.Cut(world, explosionPoint + new Vector2(2, 2), explosionPoint - new Vector2(2, 2), 0.01f);
                //world.ProcessChanges();
                CuttingTools.Cut(world, explosionPoint + new Vector2(-2, 2), explosionPoint - new Vector2(-2, 2), 0.01f);
                //world.ProcessChanges();

                Explosion e = new Explosion(world);
                e.Activate(explosionPoint, 2, 10);
                
                Alive = false;
                
                pivot = null;

                Vector2 screenLoc = ProjectionHelper.FarseerToPixel(explosionPoint);
                ParticleEffectManager.explosionEffect.Trigger(screenLoc);
            }
        }
Exemple #2
0
        private void Explode()
        {
            if (Alive)
            {
                Vector2 explosionPoint = body.Position;
                world.RemoveBody(body);
                world.ProcessChanges();
                body = null;

                CuttingTools.Cut(world, explosionPoint + new Vector2(2, 2), explosionPoint - new Vector2(2, 2), 0.01f);
                //world.ProcessChanges();
                CuttingTools.Cut(world, explosionPoint + new Vector2(-2, 2), explosionPoint - new Vector2(-2, 2), 0.01f);
                //world.ProcessChanges();

                Explosion e = new Explosion(world);
                e.Activate(explosionPoint, 2, 10);

                Alive = false;

                pivot = null;

                Vector2 screenLoc = ProjectionHelper.FarseerToPixel(explosionPoint);
                ParticleEffectManager.explosionEffect.Trigger(screenLoc);
            }
        }
Exemple #3
0
 private void OnDeath()
 {
     _deathExplosion.Activate();
     GetComponentsInChildren <MeshRenderer>().Slinq()
     .Select(meshRenderer => meshRenderer.material)
     .ForEach(material => material.color = material.color * _deathColorFogging);
 }
Exemple #4
0
        public override void Keyboard(KeyboardManager keyboardManager)
        {
            if (keyboardManager.IsNewKeyPress(Keys.OemComma))
            {
                _explosion.Activate(_mousePos, _radius, _power);
            }
            if (keyboardManager.IsKeyDown(Keys.A))
            {
                _radius = MathHelper.Clamp(_radius - 0.1f, 0, 20);
            }
            if (keyboardManager.IsKeyDown(Keys.S))
            {
                _radius = MathHelper.Clamp(_radius + 0.1f, 0, 20);
            }
            if (keyboardManager.IsKeyDown(Keys.D))
            {
                _power = MathHelper.Clamp(_power - 0.1f, 0, 20);
            }
            if (keyboardManager.IsKeyDown(Keys.F))
            {
                _power = MathHelper.Clamp(_power + 0.1f, 0, 20);
            }

            base.Keyboard(keyboardManager);
        }
Exemple #5
0
    public void Die()
    {
        Explosion explosion = worldManager.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>();

        if (explosion)
        {
            explosion.Activate();
        }
        EnemyWaveManager.Instance.aliveEnemies--;
        Destroy(gameObject);
    }
 public void CheckForDie()
 {
     if (myHealth.healthCount <= 0)
     {
         WorldManager.Instance.PlayerController.guardDrones.Remove(gameObject);
         WorldManager.Instance.PlayerController.guardDroneCount--;
         Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>();
         if (explosion)
         {
             explosion.Activate();
         }
         Destroy(gameObject);
     }
 }
Exemple #7
0
    public IEnumerator CheckForDie()
    {
        while (true)
        {
            if (myHealth.healthCount <= 0)
            {
                Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>();
                if (explosion)
                {
                    explosion.Activate();
                }
                WorldManager.Instance.Ship.RemoveBodyPart(gameObject, false);
            }

            yield return(new WaitForFixedUpdate());
        }
    }
    public IEnumerator CheckForDie()
    {
        while (true)
        {
            if (myHealth.healthCount <= 0)
            {
                parent.GetComponent <AttackDroneBay>().droneCount--;
                Explosion explosion = WorldManager.Instance.SpawnFromPool(WorldManager.ePoolTag.EXPLOSION, transform.position, transform.rotation).GetComponent <Explosion>();
                if (explosion)
                {
                    explosion.Activate();
                }
                Destroy(gameObject);
            }

            yield return(new WaitForFixedUpdate());
        }
    }
        void contactListener_BombExploded(object sender, EffectEventArgs e)
        {
            explosion = new Explosion(physicsWorld);
            Vector2 explosionLocation = e.spriteA.spriteBody.Position;
            float explosionRadius = 0f;
            float explosionForce = 0f;
            if (e.spriteA.TextureID == 48)
            {
                explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * 9f);
                explosionForce = GameSettings.ExplosivePower * 9f;  //large tnt
            }
            if (e.spriteA.TextureID == 49)
            {
                explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * 3f);
                explosionForce = GameSettings.ExplosivePower * 3f; //medium tnt
            }
            if (e.spriteA.TextureID == 50 || e.spriteA.SpriteType == Sprite.Type.Veggie)
            {
                explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier);
                explosionForce = GameSettings.ExplosivePower; //small tnt
            }
            if (e.spriteA.TextureID == 20)
            {
                explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.spriteA.Scale);
                explosionForce = GameSettings.ExplosivePower * 0.5f * e.spriteA.Scale; //cherry
            }

            if (GameSettings.CheatFunsplosions)
            {
                explosionRadius *= 2f;
                explosionForce *= 2f;
            }

            explosion.Activate(explosionLocation, explosionRadius, explosionForce);

            contactListener.DoPoof(e.spriteA);
            Sprite smoke = new Sprite(13, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(126,126) ,true);
            smoke.AnimationFPS = 12;
            smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            smoke.TintColor *= 0.33f;
            EffectSprites.Add(smoke);
            smoke = new Sprite(14, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(62, 62), true);
            smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12);
            smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f;
            smoke.TintColor *= 0.33f;
            EffectSprites.Add(smoke);
            smoke = new Sprite(14, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(62, 62), true);
            smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12);
            smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f;
            smoke.TintColor *= 0.33f;
            EffectSprites.Add(smoke);
            smoke = new Sprite(15, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(30, 30), true);
            smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12);
            smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f;
            smoke.TintColor *= 0.33f;
            EffectSprites.Add(smoke);
            smoke = new Sprite(15, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(30, 30), true);
            smoke.AnimationFPS = LevelDataManager.rand.Next(6, 12);
            smoke.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            smoke.TotalRotation = (float)(LevelDataManager.rand.Next(0, 314)) / 100.0f;
            smoke.TintColor *= 0.33f;
            EffectSprites.Add(smoke);
            Sprite bomb = new Sprite(0, 0, e.spriteA.Location + e.spriteA.SpriteOrigin - new Vector2(64, 64), true);
            bomb.HitPoints = 12;
            bomb.TotalRotation = 0.0001f;
            bomb.Scale = (float)e.spriteA.SpriteRectWidth / 64f;
            Vector2 position = ConvertUnits.ToSimUnits(bomb.SpriteCenterInWorld);
            float bombRadius = ConvertUnits.ToSimUnits(e.spriteA.SpriteRectWidth);
            if (e.spriteA.TextureID == 20)
            {
                bombRadius *= 0.5f *e.spriteA.Scale;
                bomb.Scale *= 0.5f *e.spriteA.Scale;
            }
            bomb.spriteBody = BodyFactory.CreateCircle(physicsWorld,bombRadius,1.0f,position, bomb);
            bomb.spriteBody.BodyType = BodyType.Dynamic;
            bomb.spriteBody.ResetDynamics();
            bomb.spriteBody.IsSensor = true;
            bomb.spriteBody.IgnoreGravity = true;
            bomb.SpriteType = Sprite.Type.Explosion;
            EffectSprites.Add(bomb);
            return;
        }
Exemple #10
0
        private void OnCollision(CollisionEventArgs args)
        {
            var explosion = new Explosion(this.Engine.World);

            explosion.MaxShapes = 10000;

            explosion.Activate(this.Position, 10f, 1000f);

            this.Dispose();
        }
        public void Explode()
        {
            var exp = new Explosion((World)GameObject.Scene.Physics.GetWorld());
            var worldPos = this.GameObject.WorldPosition;

            exp.Activate(new Xna.Vector2(worldPos.X, worldPos.Y), 10, 0.1f);
        }
        void contactListener_DamageShot(object sender, DamageEventArgs e)
        {
            if (GameSettings.CheatInvincibility) e.damage = 0;

            //turns off activated ability behavior
            #region pathing ability behavior on damage
            if (e.sprite.pathing != Sprite.Pathing.None)
            {

                if (e.sprite.TextureIndex >= 42 && e.sprite.TextureIndex < 49)
                {
                    #region Banana pathing off conditions and carry through ability
                    //turn banana pathing off on these collisions
                    if (e.damageType == Sprite.Type.Spring || e.damageType == Sprite.Type.Terrain || e.damageType == Sprite.Type.StaticBlock ||
                        e.damageType == Sprite.Type.PowerUp || e.damageType == Sprite.Type.Smasher || e.damageType == Sprite.Type.Switch)
                    {
                        e.sprite.pathing = Sprite.Pathing.None;
                        if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false;
                    }
                    else
                    {
                        //turn off banana if its not on its return arc
                        //if ( (shot.PathingSpeed > 0 && shot.pathingTravelled < MathHelper.ToRadians(0)) ||
                        //     (shot.PathingSpeed < 0 && shot.pathingTravelled > MathHelper.ToRadians(-180)) )
                        //{
                        //    e.sprite.pathing = Sprite.Pathing.None;
                        //    if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false;
                        //}
                        //else
                        {
                            //e.sprite.PathingSpeed = 90;
                            //e.sprite.spriteBody.AngularVelocity = 30f;
                            if (LevelDataManager.rand.Next(0,3) != 0) e.sprite.HitPoints += 1;
                        }
                    }
                    #endregion
                }
                else
                {
                    e.sprite.pathing = Sprite.Pathing.None;
                    appleCopterTimer = 0;
                    isAppleCopter = false;
                    if (e.sprite.spriteBody != null) e.sprite.spriteBody.IgnoreGravity = false;
                }

                #region strawberry/orange force impact
                if (e.sprite.SpriteType == Sprite.Type.FruitShot)
                {
                    if (e.sprite.TextureIndex >= 28 && e.sprite.TextureIndex < 35) //strawberry in any frame
                    {
                        Explosion explosion = new Explosion(physicsWorld);
                        Vector2 explosionLocation = e.sprite.spriteBody.Position;
                        float explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.sprite.Scale * 0.5f);
                        float explosionForce = GameSettings.ExplosivePower * 0.5f * e.sprite.Scale;
                        explosion.Activate(explosionLocation + ConvertUnits.ToSimUnits(new Vector2(32,48)), explosionRadius, explosionForce);
                        explosion.Activate(explosionLocation + ConvertUnits.ToSimUnits(new Vector2(-32,48)), explosionRadius, explosionForce);
                        e.sprite.spriteBody.ResetDynamics();
                        e.sprite.spriteBody.Rotation = 0;
                        contactListener.DoImpactPoofs(e.sprite.Location + new Vector2(0, 32), e.sprite);
                        e.sprite.IsHit = true;
                    }
                    if (e.sprite.TextureIndex >= 21 && e.sprite.TextureIndex < 28) //orange in any frame
                    {
                        Explosion explosion = new Explosion(physicsWorld);
                        Vector2 explosionLocation = e.sprite.spriteBody.Position;
                        float explosionRadius = ConvertUnits.ToSimUnits(GameSettings.ExplosiveForceRadiusMultiplier * e.sprite.Scale);
                        float explosionForce = GameSettings.ExplosivePower * 0.5f * e.sprite.Scale;
                        explosion.Activate(explosionLocation, explosionRadius, explosionForce);
                        e.sprite.spriteBody.ResetDynamics();
                        e.sprite.spriteBody.Rotation = 0;
                        contactListener.DoImpactPoofs(e.sprite.Location, e.sprite);
                        e.sprite.IsHit = true;
                    }
                }
                #endregion
            }
            #endregion

            if (e.damage > 0)
            {
                if (shot.SpriteType == Sprite.Type.FruitShot || shot.SpriteType == Sprite.Type.VeggieShot) Scream(e.sprite);
                if (shot.SpriteType == Sprite.Type.ExplosiveShot) e.sprite.IsHit = true;
                e.sprite.HitPoints -= e.damage;
                if (e.sprite.HitPoints <= 0) e.sprite.IsHit = true;
            }
        }