source: 2013/30/MiskaK/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2(My Warfare 2)/Partikkelit.cs @ 4734

Revision 4734, 11.2 KB checked in by anlakane, 6 years ago (diff)

Bugikorjauksia ja viilauksia.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Effects;
7
8/// <summary>
9/// Pelissä käytettävät partikkelit.
10/// </summary>
11public static class Partikkelit
12{
13    public static ExplosionSystem KiviPartikkelit { get; private set; }
14    public static ExplosionSystem KiviHajoaa { get; private set; }
15
16    public static ExplosionSystem PuuPartikkelit { get; private set; }
17    public static ExplosionSystem PuuHajoaa { get; private set; }
18
19    public static ExplosionSystem KipinaPartikkelit { get; private set; }
20
21    public static ExplosionSystem VeriPartikkelit { get; private set; }
22
23    public static ExplosionSystem RajahdysPartikkelit1 { get; private set; }
24    public static ExplosionSystem RajahdysPartikkelit2 { get; private set; }
25    public static ExplosionSystem RajahdysPartikkelit3 { get; private set; }
26    public static ExplosionSystem RajahdysPartikkelit4 { get; private set; }
27
28    public static List<Smoke> ValikkoSavut { get; private set; }
29
30    public static Flame Tuli { get; private set; }
31
32    private static readonly Image kivisirpale1 = MW2_My_Warfare_2_.LoadImage("kivisirpale1");
33    private static readonly Image kivisirpale2 = MW2_My_Warfare_2_.LoadImage("kivisirpale2");
34    private static readonly Image kipinä1 = MW2_My_Warfare_2_.LoadImage("kipinä1");
35    private static readonly Image veriroiske1 = MW2_My_Warfare_2_.LoadImage("veriroiske1");
36    private static readonly Image puusirpale1 = MW2_My_Warfare_2_.LoadImage("puusirpale1");
37    private static readonly Image savuHiukkanen1 = MW2_My_Warfare_2_.LoadImage("savuhiukkanen1");
38    private static readonly Image savuHiukkanen2 = MW2_My_Warfare_2_.LoadImage("savuhiukkanen2");
39    private static readonly Image liekkiHiukkanen1 = MW2_My_Warfare_2_.LoadImage("liekkihiukkanen1");
40    private static readonly Image liekkiHiukkanen2 = MW2_My_Warfare_2_.LoadImage("liekkihiukkanen2");
41    private static readonly Image valikkopartikkeli1 = MW2_My_Warfare_2_.LoadImage("valikkopartikkeli1");
42    private static readonly Image valikkopartikkeli2 = MW2_My_Warfare_2_.LoadImage("valikkopartikkeli2");
43
44    //private static readonly Image rajahdysPartikkeli1 = MW2_My_Warfare_2_.LoadImage("Räjähdys1");
45    //private static readonly Image rajahdysPartikkeli2 = MW2_My_Warfare_2_.LoadImage("räjähdyspartikkeli1");
46
47    private static Image rajahdys1 = MW2_My_Warfare_2_.LoadImage("rajahdys1");
48    private static Image rajahdys2 = MW2_My_Warfare_2_.LoadImage("rajahdys2");
49    private static Image rajahdys3 = MW2_My_Warfare_2_.LoadImage("rajahdys3");
50    private static Image rajahdys4 = MW2_My_Warfare_2_.LoadImage("rajahdys4");
51
52
53    static Partikkelit()
54    {
55        InitializeParticles(MW2_My_Warfare_2_.Peli);
56    }
57
58    /// <summary>
59    /// Alustetaan partikkelit käyttöä varten. Kutsu manuaalisesti
60    /// vain ClearAllin jälkeen.
61    /// </summary>
62    /// <param name="peli">Peli, johon partikkelit lisätään.</param>
63    public static void InitializeParticles(MW2_My_Warfare_2_ peli)
64    {
65        KiviPartikkelit = new ExplosionSystem(kivisirpale1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
66        KiviPartikkelit.MinScale = 1;
67        KiviPartikkelit.MaxScale = 2;
68        KiviPartikkelit.MaxLifetime = 0.5;
69        KiviPartikkelit.MinLifetime = 0.2;
70        KiviPartikkelit.MaxVelocity = 1;
71        peli.Add(KiviPartikkelit);
72
73        KiviHajoaa = new ExplosionSystem(kivisirpale1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
74        KiviHajoaa.MinScale = 5;
75        KiviHajoaa.MaxScale = 10;
76        KiviHajoaa.MaxLifetime = 1.0;
77        KiviHajoaa.MinLifetime = 0.2;
78        KiviHajoaa.MaxVelocity = 1;
79        peli.Add(KiviHajoaa);
80
81        PuuPartikkelit = new ExplosionSystem(puusirpale1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
82        PuuPartikkelit.MinScale = 1;
83        PuuPartikkelit.MaxScale = 2;
84        PuuPartikkelit.MaxLifetime = 0.5;
85        PuuPartikkelit.MinLifetime = 0.2;
86        PuuPartikkelit.MaxVelocity = 1;
87        peli.Add(PuuPartikkelit);
88
89        PuuHajoaa = new ExplosionSystem(puusirpale1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
90        PuuHajoaa.MinScale = 5;
91        PuuHajoaa.MaxScale = 10;
92        PuuHajoaa.MaxLifetime = 1.0;
93        PuuHajoaa.MinLifetime = 0.2;
94        PuuHajoaa.MaxVelocity = 0.5;
95        peli.Add(PuuHajoaa);
96
97        KipinaPartikkelit = new ExplosionSystem(kipinä1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
98        KipinaPartikkelit.MinScale = 1;
99        KipinaPartikkelit.MaxScale = 2;
100        KipinaPartikkelit.MaxLifetime = 0.5;
101        KipinaPartikkelit.MinLifetime = 0.2;
102        KipinaPartikkelit.MaxVelocity = 0.3;
103        peli.Add(KipinaPartikkelit);
104
105        VeriPartikkelit = new ExplosionSystem(veriroiske1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
106        VeriPartikkelit.MinScale = 1;
107        VeriPartikkelit.MaxScale = 2;
108        VeriPartikkelit.MaxLifetime = 0.5;//0.5
109        VeriPartikkelit.MinLifetime = 0.2;
110        VeriPartikkelit.MaxVelocity = 1;
111        peli.Add(VeriPartikkelit);
112
113        RajahdysPartikkelit1 = new ExplosionSystem(rajahdys1, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
114        RajahdysPartikkelit1.MinVelocity = 1.0;
115        RajahdysPartikkelit1.MaxVelocity = 90.0; // 45
116        RajahdysPartikkelit1.MaxScale = 20;
117        RajahdysPartikkelit1.MaxLifetime = 0.4; // Jypelin oletus 0.8
118        peli.Add(RajahdysPartikkelit1);
119
120        RajahdysPartikkelit2 = new ExplosionSystem(rajahdys2, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
121        RajahdysPartikkelit2.MinVelocity = 25.0;
122        RajahdysPartikkelit2.MaxVelocity = 140.0; // 70
123        RajahdysPartikkelit2.MaxScale = 20;
124        RajahdysPartikkelit2.MaxLifetime = 0.4;
125        peli.Add(RajahdysPartikkelit2);
126
127        RajahdysPartikkelit3 = new ExplosionSystem(rajahdys3, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
128        RajahdysPartikkelit3.MinVelocity = 60.0;
129        RajahdysPartikkelit3.MaxVelocity = 200.0; // 100
130        RajahdysPartikkelit3.MaxScale = 20;
131        RajahdysPartikkelit3.MaxLifetime = 0.4;
132        peli.Add(RajahdysPartikkelit3);
133
134        RajahdysPartikkelit4 = new ExplosionSystem(rajahdys4, Vakiot.PARTIKKELEIDEN_MAX_MAARA);
135        RajahdysPartikkelit4.MinVelocity = 50.0;
136        RajahdysPartikkelit4.MaxVelocity = 220.0; // 110
137        RajahdysPartikkelit4.MaxScale = 35;
138        RajahdysPartikkelit4.MaxLifetime = 0.6;
139        RajahdysPartikkelit4.AlphaAmount = 0.7;
140        peli.Add(RajahdysPartikkelit4);
141    }
142
143    /// <summary>
144    /// Lisätään partikkeliefekti kentälle.
145    /// </summary>
146    /// <param name="kaytettavatPartikkelit">Mitä partikkeleita lisätään.</param>
147    /// <param name="paikka">Mihin partikkelit lisätään.</param>
148    /// <param name="maara">Paljonko partikkeleita lisätään.</param>
149    public static void AddParticleEffect(ExplosionSystem kaytettavatPartikkelit, Vector paikka, int maara)
150    {
151        kaytettavatPartikkelit.AddEffect(paikka, maara);
152    }
153
154    /// <summary>
155    /// Lisätään valmis räjähdysefekti kentälle.
156    /// </summary>
157    /// <param name="paikka">Räjähdyksen paikka.</param>
158    /// <param name="maara">Käytettävien partikkelien määrä.</param>
159    public static void AddExplosionEffect(Vector paikka, int maara)
160    {
161        AddParticleEffect(RajahdysPartikkelit1, paikka, maara / 4);
162        AddParticleEffect(RajahdysPartikkelit2, paikka, maara / 4);
163        AddParticleEffect(RajahdysPartikkelit3, paikka, maara / 4);
164        AddParticleEffect(RajahdysPartikkelit4, paikka, maara / 4);
165    }
166
167    /// <summary>
168    /// Luodaan FlameSystem. Efekti pitää erikseen lisätä kentälle ja aktivoida.
169    /// </summary>
170    /// <param name="paikka">Efektin paikka.</param>
171    /// <returns>Flame.</returns>
172    public static Flame CreateFlames(Vector paikka, double elinaika)
173    {
174        Tuli = new Flame(liekkiHiukkanen1);
175        Tuli.AlphaAmount = 0.5;
176        Tuli.MaximumLifetime = TimeSpan.FromSeconds(elinaika);
177        return Tuli;
178    }
179
180    public static Smoke CreateSmoke(Image kuva, Vector paikka, double leveys, Angle suunta, double elinaika)
181    {
182        Smoke savu = new Smoke(kuva, leveys, suunta);
183        savu.MaximumLifetime = TimeSpan.FromSeconds(100000);
184        savu.MinLifetime = elinaika;
185        savu.MaxLifetime = 40.0;
186        savu.Position = paikka;
187        savu.MinAcceleration = 50.0;
188        return savu;
189    }
190
191    public static void LisaaValikkoTaustaPartikkelit()
192    {
193        ValikkoSavut = new List<Smoke>();
194        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 100, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
195        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli2, new Vector(MW2_My_Warfare_2_.Screen.Left + 200, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
196        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 300, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
197        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli2, new Vector(MW2_My_Warfare_2_.Screen.Left + 500, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
198        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 700, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
199        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 800, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
200        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli2, new Vector(MW2_My_Warfare_2_.Screen.Left + 1000, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
201        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 1100, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
202        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli2, new Vector(MW2_My_Warfare_2_.Screen.Left + 1200, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
203        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 1400, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
204        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 1500, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
205        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli2, new Vector(MW2_My_Warfare_2_.Screen.Left + 1600, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
206        ValikkoSavut.Add(CreateSmoke(valikkopartikkeli1, new Vector(MW2_My_Warfare_2_.Screen.Left + 1800, MW2_My_Warfare_2_.Screen.Bottom), 15, Angle.FromDegrees(90), RandomGen.NextInt(1, 20)));
207
208
209
210        foreach (Smoke savu in ValikkoSavut)
211        {
212            MW2_My_Warfare_2_.Peli.Add(savu);
213        }
214    }
215
216    public static void PoistaValikkoTaustaPartikkelit()
217    {
218        foreach (Smoke savu in ValikkoSavut)
219        {
220            savu.Destroy();
221        }
222        ValikkoSavut.Clear();
223    }
224}
Note: See TracBrowser for help on using the repository browser.