Esempio n. 1
0
        public static void RaonLauncherProjectile2ActiveTornado(Vector2 position)
        {
            Flipbook fb = new Flipbook(position, new Vector2(15.5f, 18.5f), 31, 29, "Graphics/Tank/RaonLauncherMineS2/CharacterSpritesheet",
                                       new AnimationInstance()
            {
                StartingFrame = 20, EndingFrame = 36, TimePerFrame = 1 / 10f
            }, DepthParameter.ProjectileSFX, 0);

            SpecialEffect se = new SpecialEffect(fb, 0);

            float positionMultiplier = 0;

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                if (Topography.IsNotInsideMapBoundaries(se.Flipbook.Position))
                {
                    SpecialEffectHandler.Remove(se);
                }

                se.Flipbook.Position -= new Vector2(0, positionMultiplier);
                se.Flipbook.Rotation += (float)gameTime.ElapsedGameTime.TotalSeconds * positionMultiplier * positionMultiplier * MathHelper.PiOver2;

                positionMultiplier += (float)gameTime.ElapsedGameTime.TotalSeconds;
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 2
0
        public Particle(Flipbook flipbook, Vector2 trajectory, Vector2 windInfluence, ParticleUpdateConfiguration particleConfiguration) : base(flipbook)
        {
            alpha = 1;

            if (particleConfiguration.Rotate)
            {
                rotatingSpeed = RandomValue * Parameter.GroundParticleMaximumRotatingSpeed;
            }
            if (particleConfiguration.SetScale)
            {
                scalingFactor = RandomValue * Parameter.GroundParticleMaximumScalingFactor;
            }
            if (particleConfiguration.Fade)
            {
                alphaFactor = Parameter.GroundParticleInitialAlphaFactor + (float)Parameter.Random.NextDouble() * 5;
            }

            float randomValue = (float)Parameter.Random.NextDouble();

            float yAccFactor = (particleConfiguration.UseYAcceleration) ? Parameter.GroundParticleInitialYAcceleration - windInfluence.Y : 0;
            float xAccFactor = (particleConfiguration.UseXAcceleration) ? windInfluence.X : 0;

            yMovement = new AcceleratedMovement();
            yMovement.Preset(Parameter.GroundParticleInitialYSpeed + (randomValue * Parameter.GroundParticleMaximumYSpeed * trajectory.Y), yAccFactor);

            xMovement = new AcceleratedMovement();
            xMovement.Preset(randomValue * Parameter.GroundParticleMaximumXSpeed * trajectory.X, xAccFactor);

            initialPosition = flipbook.Position;
        }
Esempio n. 3
0
        private static void CreateFlipbook(Flipbook flipbook,
                                           Vector2 Position, Vector2 Pivot,
                                           int SpriteWidth, int SpriteHeight, string Texture2DPath,
                                           List <AnimationInstance> AnimationCycle,
                                           float LayerDepth, float Rotation = 0)
        {
            flipbook.SpriteWidth    = SpriteWidth;
            flipbook.SpriteHeight   = SpriteHeight;
            flipbook.Texture2DPath  = Texture2DPath;
            flipbook.Rotation       = Rotation;
            flipbook.AnimationCycle = AnimationCycle;

            flipbook.Position = Position;
            flipbook.Pivot    = Pivot;

            flipbook.currentAnimatedInstanceIndex = 0;
            flipbook.repeatAnimationCycle         = false;

            flipbook.LayerDepth = LayerDepth;
            flipbook.Effect     = SpriteEffects.None;

            flipbook.Texture2D = AssetHandler.Instance.RequestTexture(Texture2DPath);

            flipbook.FlipbookAnimationList = new List <FlipbookAnimation>();

            flipbook.CreateFlipbookInstances();

            flipbook.framesPerLine = flipbook.Texture2D.Width / SpriteWidth;
        }
Esempio n. 4
0
        public static void TricoProjectile1Explosion(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(90f, 100f), 192, 192, "Graphics/Special Effects/Tank/Trico/Flame1",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 19, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, rotation);
            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 5
0
        public static void TricoProjectile3Explosion(Vector2 position)
        {
            Flipbook fb = new Flipbook(position, new Vector2(179f, 197f), 311, 313, "Graphics/Special Effects/Tank/Trico/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 29, TimePerFrame = 1 / 20f
            }, DepthParameter.ProjectileSFX, 0);
            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 6
0
        public static void TurtleProjectile3Explosion(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(90f, 93f), 159, 173, "Graphics/Special Effects/Tank/Turtle/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 28, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, rotation);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 7
0
        public static void TurtleProjectile3Division(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(78f, 65f), 186, 129, "Graphics/Special Effects/Tank/Turtle/Flame3Divide",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 10, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, rotation);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 8
0
        public static void RaonLauncherProjectile3Explosion(Vector2 position)
        {
            Flipbook fb = new Flipbook(position, new Vector2(94, 95), 172, 182, "Graphics/Special Effects/Tank/RaonLauncher/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 29, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, (float)Parameter.Random.NextDouble() * MathHelper.TwoPi);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 9
0
        public static void IceProjectile3Explosion(Vector2 position)
        {
            Flipbook fb = new Flipbook(position, new Vector2(185, 187), 370, 374, "Graphics/Special Effects/Tank/Ice/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 10
0
        public static void MageProjectile2Explosion(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(82, 82), 143, 142, "Graphics/Special Effects/Tank/Mage/Flame2",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 17, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, rotation);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);
        }
Esempio n. 11
0
        public static SpecialEffect DragonProjectile1Explosion(Vector2 position, float rotation, float layerDepth = DepthParameter.ProjectileSFX)
        {
            Flipbook fb = new Flipbook(position, new Vector2(94, 92.5f), 188, 185, "Graphics/Special Effects/Tank/Dragon/Flame1",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f
            }, layerDepth, rotation);

            SpecialEffect se = new SpecialEffect(fb, 1);

            SpecialEffectHandler.Add(se);

            return(se);
        }
Esempio n. 12
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

            Flipbook.Rotation += rotatingSpeed * elapsedTime;
            Flipbook.Scale    += Vector2.One * scalingFactor * elapsedTime;
            Flipbook.SetTransparency(alpha -= alphaFactor * elapsedTime);

            xMovement.RefreshCurrentPosition(elapsedTime);
            yMovement.RefreshCurrentPosition(elapsedTime);

            Flipbook.Position = initialPosition + new Vector2(xMovement.CurrentPosition, yMovement.CurrentPosition);
        }
Esempio n. 13
0
        public static SpecialEffect RaonLauncherProjectile1(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(
                position, new Vector2(19, 21),
                38, 42, "Graphics/Tank/RaonLauncher/Bullet1",
                new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 39, TimePerFrame = 0f
            },
                DepthParameter.Projectile, rotation);

            SpecialEffect se = new SpecialEffect(fb, 0);

            return(se);
        }
Esempio n. 14
0
        private static void LowHealthSmokeParticle(Vector2 position, string smokePath)
        {
            Flipbook fb = new Flipbook(position, new Vector2(16, 16), 32, 32, smokePath,
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 7, TimePerFrame = 1 / 15f
            },
                                       DepthParameter.ProjectileSFX, (float)Parameter.Random.NextDouble() * MathHelper.TwoPi);

            float density = (float)(1 / 3f + 2 * Parameter.Random.NextDouble() / 3);

            fb.SetTransparency(density);
            fb.Scale *= density;

            SpecialEffect se = new SpecialEffect(fb, 1);

            MatchMetadata mm = LevelScene.MatchMetadata;

            Vector2 posFactor =
                -Vector2.UnitY * 2 +
                Vector2.Transform(
                    Vector2.UnitX,
                    Matrix.CreateRotationZ(
                        mm.WindAngleRadians +
                        MathHelper.ToRadians(
                            (0.5f - (float)Parameter.Random.NextDouble()) * 30)) *
                    mm.WindForce / 5);

            if (Math.Abs(posFactor.Y) < 1)
            {
                posFactor = new Vector2(posFactor.X, (posFactor.Y < 0) ? -1 : 1);
            }

            float rotationFactor = (mm.WindForce / 10) * (0.5f - (float)Parameter.Random.NextDouble());
            float scaleFactor    = (float)Parameter.Random.NextDouble();

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

                se.Flipbook.Position += posFactor;
                se.Flipbook.Rotation += rotationFactor;

                se.Flipbook.Scale *= 1 + scaleFactor * elapsedTime * 2;
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 15
0
        private static void ThorShotColorBase(Vector2 position, Color baseColor, float scale, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(8, 128), 16, 256, "Graphics/Entity/Thor/ThorLaser", new AnimationInstance(), DepthParameter.ProjectileSFXBase, rotation);

            fb.Scale = new Vector2(3, scale);

            SpecialEffect se = new SpecialEffect(fb, 1f);

            float elapsedTime = 1f;

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                elapsedTime      -= (float)gameTime.ElapsedGameTime.TotalSeconds;
                se.Flipbook.Color = baseColor * elapsedTime;
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 16
0
        private static void ThorShotBase(Vector2 position, float scale, float rotation)
        {
            Flipbook fb            = new Flipbook(position, new Vector2(8, 128), 16, 256, "Graphics/Entity/Thor/ThorLaser", new AnimationInstance(), DepthParameter.ProjectileSFX, rotation);
            Vector2  originalScale = new Vector2(3, scale);

            fb.Scale = originalScale;

            SpecialEffect se = new SpecialEffect(fb, 1f);

            float transparency = 1f;

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                transparency -= (float)gameTime.ElapsedGameTime.TotalSeconds;
                se.Flipbook.SetTransparency(transparency * 2);
                se.Flipbook.Scale = new Vector2(se.Flipbook.Scale.X * transparency, originalScale.Y - ((originalScale.Y * (1 - transparency)) / (originalScale.Y * 2)));
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 17
0
        public static void LightningProjectile3Explosion(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(196, 193), 324, 326, "Graphics/Special Effects/Tank/Lightning/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 20, TimePerFrame = 1 / 20f
            }, DepthParameter.ProjectileSFX, rotation + MathHelper.PiOver2);

            SpecialEffect se = new SpecialEffect(fb, 1);

            // float transparency = 1f;
            se.UpdateAction += (specialEffect, gameTime) =>
            {
                se.Flipbook.Rotation -= MathHelper.TwoPi * (float)gameTime.ElapsedGameTime.TotalSeconds / 25;
                //transparency -= (float)gameTime.ElapsedGameTime.TotalSeconds;
                //se.Flipbook.SetTransparency(transparency);
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 18
0
        public static void MageProjectile3Explosion(Vector2 position, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(192.5f, 192), 385, 384, "Graphics/Special Effects/Tank/Mage/Flame3",
                                       new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f
            }, DepthParameter.ProjectileSFX, rotation);

            SpecialEffect se = new SpecialEffect(fb, 1);

            float transparency = 1f;

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                se.Flipbook.Rotation += MathHelper.Pi * (float)gameTime.ElapsedGameTime.TotalSeconds;
                transparency         -= (float)gameTime.ElapsedGameTime.TotalSeconds;
                se.Flipbook.SetTransparency(transparency);
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 19
0
        public static void HitEffect(Vector2 position, int frameIndex, float rotation)
        {
            Flipbook fb = new Flipbook(position, new Vector2(16, 16), 32, 32, "Graphics/Special Effects/General/Hit",
                                       new AnimationInstance()
            {
                StartingFrame = frameIndex, EndingFrame = frameIndex
            },
                                       DepthParameter.ProjectileSFX, rotation + MathHelper.PiOver2);

            SpecialEffect se = new SpecialEffect(fb, 1f);

            float scale = 0;

            se.UpdateAction += (specialEffect, gameTime) =>
            {
                scale += (float)gameTime.ElapsedGameTime.TotalSeconds * 4;
                float tScale = (float)Math.Sin(scale);

                se.Flipbook.Scale = new Vector2(0.2f + tScale, tScale * 18);
                se.Flipbook.SetTransparency(1 - scale);
            };

            SpecialEffectHandler.Add(se);
        }
Esempio n. 20
0
 public SpecialEffect(Flipbook flipbook)
 {
     Flipbook       = flipbook;
     ceaseCondition = CeaseCondition.CustomFunction;
 }
Esempio n. 21
0
 public SpecialEffect(Flipbook flipbook, float timespan)
 {
     Flipbook       = flipbook;
     this.timespan  = timespan;
     ceaseCondition = CeaseCondition.Timespan;
 }
Esempio n. 22
0
 public SpecialEffect(Flipbook flipbook, int cicles)
 {
     Flipbook       = flipbook;
     this.cicles    = cicles;
     ceaseCondition = CeaseCondition.Cicles;
 }