source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/Effects/Smoke.cs @ 4507

Revision 4507, 3.0 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1using System;
2using Microsoft.Xna.Framework;
3
4namespace Jypeli.Effects
5{
6    /// <summary>
7    /// Savuefekti.
8    /// </summary>
9    public class Smoke : ParticleSystem
10    {
11        private double addTime;
12        private double width;
13
14        /// <summary>
15        /// Savu, johon vaikuttaa tuuli
16        /// </summary>
17        public Smoke()
18            : base(Game.LoadImageFromResources("smoke"), 100)
19        {
20            this.Angle = Angle.FromDegrees(90);
21            this.width = 5;
22        }
23
24        /// <summary>
25        /// Savu, johon vaikuttaa tuuli ja jonka tekstuuria ja leveyttä voi vaihtaa.
26        /// </summary>
27        /// <param name="particleImage">Partikkelin kuva</param>
28        /// <param name="width">Savun leveys</param>
29        public Smoke(Image particleImage, double width)
30            : base(particleImage, (int)width*4)
31        {
32            this.Angle = Angle.FromDegrees(90);
33            this.width = width;
34        }
35
36        /// <summary>
37        /// Määritetään oletusarvot efektille
38        /// </summary>
39        protected override void InitializeParticles()
40        {
41            MinLifetime = 4.0;
42            MaxLifetime = 4.2;
43           
44            MinScale = 70;
45            MaxScale = 100;
46
47            ScaleAmount = 1;
48
49            AlphaAmount = 0.3;
50
51            MinVelocity = 40;
52            MaxVelocity = 60;
53
54            MinAcceleration = 1;
55            MaxAcceleration = 1;
56
57            MinRotationSpeed = -MathHelper.PiOver4;
58            MaxRotationSpeed = MathHelper.PiOver4;
59
60        }
61
62        /// <summary>
63        /// Lasketaan savun suunnalle satunnaisuutta
64        /// </summary>
65        /// <returns>Partikkelin suunta</returns>
66        protected override Vector GiveRandomDirection()
67        {
68            return Vector.FromLengthAndAngle(1, Angle + Angle.FromDegrees(RandomGen.NextDouble(-5, 5)));
69        }
70
71        /// <summary>
72        /// Päivitetään savua
73        /// </summary>
74        /// <param name="time"></param>
75        public override void Update(Time time)
76        {
77            double t = time.SinceLastUpdate.TotalSeconds;
78            addTime += t;
79            if (addTime > 0.1)
80            {
81                for (int i = 0; i < (int)Math.Ceiling(width/50); i++)
82                {
83                    base.AddEffect(RandomGen.NextDouble(Position.X - width / 2, Position.X + width / 2), Position.Y, 2);
84                }
85                   
86                addTime = 0;
87            }
88            base.Update(time);
89        }
90
91        /// <summary>
92        /// Alustetaan partikkeli
93        /// </summary>
94        /// <param name="p">Partikkeli joka alustetaan</param>
95        /// <param name="position">Sijainti johon alustetaan</param>
96        protected override void InitializeParticle(Particle p, Vector position)
97        {
98            base.InitializeParticle(p, position);
99
100            if(!IgnoreWind)
101            p.Acceleration = Game.Wind;
102           
103        }
104    }
105}
Note: See TracBrowser for help on using the repository browser.