source: 2011/31/AleksiK/WorkingTitle/WorkingTitle/Peli.cs @ 2602

Revision 2602, 23.3 KB checked in by alkivima, 8 years ago (diff)

Talletus.

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6using Physics2DDotNet.Ignorers;
7using System.Collections.Generic;
8
9
10public class Peli : TopDownPhysicsGame
11{
12    PhysicsObject vasenReuna;
13    PhysicsObject oikeaReuna;
14    DoubleMeter voimaMittari1;
15    DoubleMeter voimaMittari2;
16    Automobile auto1;
17    Automobile auto2;
18    IntMeter pelaajan1Pisteet;
19    IntMeter pelaajan2Pisteet;
20    Label aikaNaytto;
21
22    AssaultRifle pyssy1;
23    AssaultRifle pyssy2;
24
25    bool voikoPelaaja1Heittaa = true;
26    bool voikoPelaaja2Heittaa = true;
27
28    Image auto1Kuva = LoadImage("PunAuto");
29    Image auto2Kuva = LoadImage("SinAuto");
30    Image[] auto1Ampuu = LoadImages("PunAuto", "PunAutoAmpuu", "PunAuto", "PunAutoAmpuu", "PunAuto");
31    Image[] auto2Ampuu = LoadImages("SinAuto", "SinAutoAmpuu", "SinAuto", "SinAutoAmpuu", "SinAuto");
32   
33    Image kiwi1 = LoadImage("punpyl");
34    Image kiwi2 = LoadImage("sinpyl");
35
36    Image rapa = LoadImage("mud");
37    Image rapas = LoadImage("muds");
38
39    Image kentta = LoadImage("sand");
40
41    Image raja = LoadImage("stone");
42
43    Image splosion = LoadImage("rajahdysEsimerkki");
44
45    Image liekinkuva = LoadImage("liekkiEsimerkki");
46
47    Image kuti = LoadImage("panos");
48
49
50    List<Label> valikonKohdat;
51
52    const int MontakoPistettaVoittoon = 3;
53
54
55    public override void Begin()
56    {
57        KineticFriction = 0.5;
58
59        Valikko();
60
61        MediaPlayer.Play("invmustdie");
62
63    }
64
65    void Autot(int auto)
66    {
67
68        if (auto == 1)
69        {
70            auto1 = new Automobile(60, 30);
71            auto1.CollisionIgnorer = new ObjectIgnorer();
72            auto1.Mass = 100.0;
73            auto1.Color = new Color(1, 1, 1);
74            auto1.X = -300;
75            auto1.Y = 0;
76            auto1.LinearDamping = 0.975;
77            auto1.AngularDamping = 0.1;
78            auto1.CanRotate = false;
79            auto1.Acceleration = 625;
80            auto1.Image = auto1Kuva;
81            auto1.Animation = new Animation(auto1Ampuu);
82            pyssy1 = new AssaultRifle(20, 5);
83            pyssy1.Tag = "ase";
84            pyssy1.TimeBetweenUse = TimeSpan.FromMilliseconds(60);
85            pyssy1.IsVisible = false;
86            pyssy1.Ammo.Value = 9999;
87            auto1.Add(pyssy1);
88
89        }
90        else
91        {
92            auto2 = new Automobile(60, 30);
93            auto2.CollisionIgnorer = new ObjectIgnorer();
94            auto2.Mass = 100.0;
95            auto2.Color = new Color(255, 255, 255);
96            auto2.X = 300;
97            auto2.Y = 0;
98            auto2.LinearDamping = 0.975;
99            auto2.AngularDamping = 0.1;
100            auto2.Angle = Angle.FromDegrees(180.0);
101            auto2.CanRotate = false;
102            auto2.Acceleration = 625;
103            auto2.Image = auto2Kuva;
104            auto2.Animation = new Animation(auto2Ampuu);
105            pyssy2 = new AssaultRifle(20, 5);
106            pyssy2.Tag = "ase";
107            pyssy2.TimeBetweenUse = TimeSpan.FromMilliseconds(60);
108            pyssy2.IsVisible = false;
109            pyssy2.Ammo.Value = 9999;
110            auto2.Add(pyssy2);
111        }
112
113
114    }
115
116    void Valikko()
117    {
118        ClearAll();
119        valikonKohdat = new List<Label>();
120
121        Label kohta1 = new Label("Aloita");
122        kohta1.Position = new Vector(0, 40);
123        valikonKohdat.Add(kohta1);
124
125        Label kohta2 = new Label("Lopeta");
126        kohta2.Position = new Vector(0, -40);
127        valikonKohdat.Add(kohta2);
128
129        foreach (Label valikonKohta in valikonKohdat)
130        {
131            Add(valikonKohta);
132        }
133
134        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
135        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
136
137        Mouse.IsCursorVisible = true;
138        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "Lopeta");
140    }
141
142    void ValikossaLiikkuminen(AnalogState hiirenTila)
143    {
144        foreach (Label kohta in valikonKohdat)
145        {
146            if (Mouse.IsCursorOn(kohta))
147            {
148                kohta.TextColor = Color.Red;
149            }
150            else
151            {
152                kohta.TextColor = Color.Black;
153            }
154
155        }
156    }
157
158    void AloitaPeli()
159    {
160        ClearAll();
161        Autot(1);
162        Autot(2);
163        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
164
165        AddCollisionHandler(auto1, KasitteleAuto1Tormays);
166        AddCollisionHandler(auto2, KasitteleAuto2Tormays);
167
168        AsetaOhjaimet();
169
170        Add(auto1, 0);
171        Add(auto2, 0);
172
173        Kentta();
174
175        HPmittarit();
176
177        LisaaLaskurit();
178
179    }
180
181    void Lopeta()
182    {
183        Exit();
184    }
185
186    void AsetaOhjaimet()
187    {
188        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
189        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
190        Keyboard.Listen(Key.W, ButtonState.Down, kiihdyta, "Kiihdytä", auto1);
191        Keyboard.Listen(Key.S, ButtonState.Down, jarruta, "Jarruta", auto1);
192        Keyboard.Listen(Key.A, ButtonState.Down, kaanny, "Käänny vasemmalle", auto1, 2.0);
193        Keyboard.Listen(Key.D, ButtonState.Down, kaanny, "Käänny oikealle", auto1, -2.0);
194        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, AloitaAmpuminen, null, auto1, pyssy1);
195        Keyboard.Listen(Key.LeftControl, ButtonState.Down, AmmuAseella, "Ammu", auto1, pyssy1);
196        Keyboard.Listen(Key.LeftControl, ButtonState.Released, LopetaAmpuminen, null, auto1, pyssy1);
197
198        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuNaatti1, "Ammu", auto1);
199
200        Keyboard.Listen(Key.RightAlt, ButtonState.Pressed, AmmuNaatti2, "Ammu", auto2);
201
202
203        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
204        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
205        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdyta, "Kiihdytä", auto2);
206        Keyboard.Listen(Key.Down, ButtonState.Down, jarruta, "Jarruta", auto2);
207        Keyboard.Listen(Key.Left, ButtonState.Down, kaanny, "Käänny vasemmalle", auto2, 2.0);
208        Keyboard.Listen(Key.Right, ButtonState.Down, kaanny, "Käänny oikealle", auto2, -2.0);
209        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, AloitaAmpuminen, null, auto2, pyssy2);
210        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", auto2, pyssy2);
211        Keyboard.Listen(Key.RightControl, ButtonState.Released, LopetaAmpuminen, null, auto2, pyssy2);
212    }
213
214    void kiihdyta(Automobile auto)
215    {
216        auto.Accelerate(Time.SinceLastUpdate.TotalSeconds);
217    }
218
219    void jarruta(Automobile auto)
220    {
221        auto.Brake(Time.SinceLastUpdate.TotalSeconds);
222    }
223
224    void kaanny(Automobile auto, double kaannos)
225    {
226        auto.Angle = Angle.FromDegrees(auto.Angle.Degrees + kaannos * 1.25);
227    }
228
229    void Rapaa()
230    {
231        ButtonState rapa1 = Keyboard.GetKeyState(Key.W);
232        ButtonState rapa2 = Keyboard.GetKeyState(Key.Up);
233
234        if (rapa1 == ButtonState.Down)
235        {
236            Smoke kura = new Smoke();
237            kura.ParticleImage = rapa;
238            kura.MaxScale = 0.7;
239            kura.Position = auto1.Position + Vector.FromLengthAndAngle(25, (auto1.Angle + Angle.FromDegrees(180)));
240            kura.MaximumLifetime = new TimeSpan(0, 0, 0, 2, 0);
241            kura.Angle = auto1.Angle + Angle.FromDegrees(180);
242            kura.FadeOut(1.5);
243            //new TimeSpan(0,0,0,1,0);
244            Add(kura);
245
246            //Flame liekki = new Flame(liekinkuva);
247            ////, 25, Vector.FromLengthAndAngle(25,(auto1.Angle + Angle.FromDegrees(180))));
248            //liekki.Position = auto1.Position + Vector.FromLengthAndAngle(0, (auto1.Angle + Angle.FromDegrees(180)));
249            //liekki.Angle = auto1.Angle + Angle.FromDegrees(180);
250            //liekki.Width = 0.5;
251            //liekki.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 50);
252            //liekki.MaxScale = 0.01;
253            //Add(liekki, -1);
254
255        }
256
257        if (rapa2 == ButtonState.Down)
258        {
259            Smoke kura1 = new Smoke();
260            kura1.ParticleImage = rapas;
261            kura1.MaxScale = 0.7;
262            kura1.Position = auto2.Position + Vector.FromLengthAndAngle(25, (auto2.Angle + Angle.FromDegrees(180)));
263            kura1.MaximumLifetime = new TimeSpan(0, 0, 0, 2, 0);
264            kura1.Angle = auto2.Angle + Angle.FromDegrees(180);
265            kura1.FadeOut(1.5);
266            //new TimeSpan(0,0,0,1,0);
267            Add(kura1);
268        }
269
270    }
271
272    void Kentta()
273    {
274        Mouse.IsCursorVisible = false;
275
276        //Wind = new Vector(75, 100);
277
278        Timer ajastin = new Timer();
279        ajastin.Interval = 0.08;
280        ajastin.Timeout += Rapaa;
281        ajastin.Start();
282
283
284        //PhysicsObject maata = PhysicsObject.CreateStaticObject(100.0, 100.0);
285        //maata.Shape = Shape.Circle;
286        //maata.Color = Color.DarkGray;
287        //maata.X = 0;
288        //maata.Y = 0;
289        //maata.Restitution = 0.2;
290        //maata.Tag = "pylvas"; Add(maata, -1);
291
292        //maata.Angle = Angle.FromDegrees(330.0);
293
294        PhysicsObject pylvas1 = PhysicsObject.CreateStaticObject(100.0, 100.0);
295        pylvas1.Shape = Shape.Circle;
296        pylvas1.X = -100;
297        pylvas1.Y = 0;
298        pylvas1.Restitution = 0.2;
299        pylvas1.Tag = "pylvas";
300        pylvas1.Color = Color.DarkGray;
301        Add(pylvas1, -1);
302
303        pylvas1.Angle = Angle.FromDegrees(100.0);
304
305        PhysicsObject pylvas2 = PhysicsObject.CreateStaticObject(100.0, 100.0);
306        pylvas2.Shape = Shape.Circle;
307        pylvas2.X = -300;
308        pylvas2.Y = 200;
309        pylvas2.Restitution = 0.2;
310        pylvas2.Tag = "pylvas";
311        pylvas2.Color = Color.DarkGray;
312        Add(pylvas2, -1);
313
314        pylvas2.Angle = Angle.FromDegrees(200.0);
315
316        PhysicsObject pylvas3 = PhysicsObject.CreateStaticObject(100.0, 100.0);
317        pylvas3.Shape = Shape.Circle;
318        pylvas3.X = -300;
319        pylvas3.Y = -200;
320        pylvas3.Restitution = 0.2;
321        pylvas3.Tag = "pylvas";
322        pylvas3.Color = Color.DarkGray;
323        Add(pylvas3, -1);
324
325        pylvas3.Angle = Angle.FromDegrees(130.0);
326
327        PhysicsObject pylvas4 = PhysicsObject.CreateStaticObject(100.0, 100.0);
328        pylvas4.Shape = Shape.Circle;
329        pylvas4.X = 100;
330        pylvas4.Y = 0;
331        pylvas4.Restitution = 0.2;
332        pylvas4.Tag = "pylvas";
333        pylvas4.Color = Color.DarkGray;
334        Add(pylvas4, -1);
335
336        pylvas4.Angle = Angle.FromDegrees(200.0);
337
338        PhysicsObject pylvas5 = PhysicsObject.CreateStaticObject(100.0, 100.0);
339        pylvas5.Shape = Shape.Circle;
340        pylvas5.X = 300;
341        pylvas5.Y = -200;
342        pylvas5.Restitution = 0.2;
343        pylvas5.Tag = "pylvas";
344        pylvas5.Color = Color.DarkGray;
345        Add(pylvas5, -2);
346
347        pylvas5.Angle = Angle.FromDegrees(40.0);
348
349        PhysicsObject pylvas6 = PhysicsObject.CreateStaticObject(100.0, 100.0);
350        pylvas6.Shape = Shape.Circle;
351        pylvas6.X = 300;
352        pylvas6.Y = 200;
353        pylvas6.Restitution = 0.2;
354        pylvas6.Tag = "pylvas";
355        pylvas6.Color = Color.DarkGray;
356        Add(pylvas6, -1);
357
358        pylvas6.Angle = Angle.FromDegrees(330.0);
359
360        vasenReuna = Level.CreateLeftBorder();
361        vasenReuna.Restitution = 0.3;
362        vasenReuna.IsVisible = true;
363        //vasenReuna.Image = raja;
364
365        oikeaReuna = Level.CreateRightBorder();
366        oikeaReuna.Restitution = 0.3;
367        oikeaReuna.IsVisible = true;
368        //oikeaReuna.Image = raja;
369
370        PhysicsObject ylaReuna = Level.CreateTopBorder();
371        ylaReuna.Restitution = 0.3;
372        ylaReuna.IsVisible = true;
373        //ylaReuna.Image = raja;
374
375        PhysicsObject alaReuna = Level.CreateBottomBorder();
376        alaReuna.Restitution = 0.3;
377        alaReuna.IsVisible = true;
378        //alaReuna.Image = raja;
379
380        Level.BackgroundColor = Color.DarkGray;
381
382        Level.Background.Image = kentta;
383
384        Camera.X = 0.0;
385        Camera.Y = 0.0;
386        Camera.ZoomFactor = 1.0
387;
388
389        pylvas1.Image = kiwi1;
390        pylvas2.Image = kiwi1;
391        pylvas3.Image = kiwi1;
392        pylvas4.Image = kiwi2;
393        pylvas5.Image = kiwi2;
394        pylvas6.Image = kiwi2;
395        //maata.Image = ;
396
397    }
398
399    // Käsittelee mlempien pelaajien kuolemat
400    void PelaajaTuhoutuu(Automobile auto)
401    {
402        if (voimaMittari1.Value <= 0)
403        {
404            Explosion rajahdys1 = new Explosion(200);
405            rajahdys1.Position = auto1.Position;
406            rajahdys1.Speed = 300.0;
407            rajahdys1.Force = 5000;
408
409            Add(rajahdys1);
410            rajahdys1.IsVisible = false;
411
412            ExplosionSystem splosion1 = new ExplosionSystem(splosion, 100);
413
414            Add(splosion1);
415            splosion1.BlendMode = BlendMode.Additive;
416            double x = auto1.X;
417            double y = auto1.Y;
418            splosion1.MinScale = 200;
419            splosion1.MaxScale = 400;
420            splosion1.MinLifetime = 2;
421            splosion1.MaxLifetime = 3;
422            splosion1.MinVelocity = 1;
423            splosion1.MaxVelocity = 75;
424            int pMaara = 50;
425            splosion1.AddEffect(auto1.X, auto1.Y, pMaara);
426
427        }
428
429        if (voimaMittari2.Value <= 0)
430        {
431            Explosion rajahdys2 = new Explosion(200);
432            rajahdys2.Position = auto2.Position;
433            rajahdys2.Speed = 300.0;
434            rajahdys2.Force = 5000;
435            Add(rajahdys2);
436
437            ExplosionSystem splosion2 = new ExplosionSystem(splosion, 100);
438
439            Add(splosion2);
440            splosion2.BlendMode = BlendMode.Additive;
441            double x = auto2.X;
442            double y = auto2.Y;
443            splosion2.MinScale = 200;
444            splosion2.MaxScale = 400;
445            splosion2.MinLifetime = 2;
446            splosion2.MaxLifetime = 3;
447            splosion2.MinVelocity = 1;
448            splosion2.MaxVelocity = 75;
449            int pMaara = 50;
450            splosion2.AddEffect(auto2.X, auto2.Y, pMaara);
451
452        }
453        auto.Destroy();
454        if (auto == auto1) pelaajan2Pisteet.Value += 1; else pelaajan1Pisteet.Value += 1;
455        if (pelaajan1Pisteet.Value >= pelaajan1Pisteet.MaxValue || pelaajan2Pisteet >= pelaajan2Pisteet.MaxValue) return;
456        UusiEra();
457    }
458
459    void Voitto(Automobile auto)
460    {
461        if (auto == auto1)
462        {
463            MessageDisplay.Add("Punainen Voitti!");
464            MessageDisplay.TextColor = Color.Red;
465            MessageDisplay.X = 100.0;
466            MessageDisplay.Y = 360.0;
467
468        }
469        else
470        {
471            MessageDisplay.Add("Sininen Voitti!");
472            MessageDisplay.TextColor = Color.DarkCyan;
473            MessageDisplay.X = 700.0;
474            MessageDisplay.Y = 360.0;
475        }
476
477        Loppui();
478        Remove(auto1);
479        Remove(auto2);
480    }
481
482    void HPmittarit()
483    {
484        voimaMittari1 = new DoubleMeter(50);
485        voimaMittari1.MaxValue = 50;
486        voimaMittari1.MinValue = 0;
487        voimaMittari1.LowerLimit += delegate { PelaajaTuhoutuu(auto1); };
488
489        BarGauge voimaPalkki = new BarGauge(10, 150);
490        voimaPalkki.BindTo(voimaMittari1);
491        voimaPalkki.X = (0.95 * Screen.LeftSafe);
492        voimaPalkki.Y = (0.05 * Screen.Height);
493        Add(voimaPalkki);
494
495        voimaMittari2 = new DoubleMeter(50);
496        voimaMittari2.MaxValue = 50;
497        voimaMittari2.MinValue = 0;
498        voimaMittari2.LowerLimit += delegate { PelaajaTuhoutuu(auto2); };
499        BarGauge voimaPalkki2 = new BarGauge(10, 150);
500        voimaPalkki2.BindTo(voimaMittari2);
501        voimaPalkki2.X = (0.95 * Screen.RightSafe);
502        voimaPalkki2.Y = (0.05 * Screen.Height);
503        voimaPalkki2.BarColor = Color.Blue;
504        Add(voimaPalkki2);
505    }
506    void KasitteleAuto1Tormays(PhysicsObject auto1, PhysicsObject kohde)
507    {
508
509        if (auto1.Velocity.Magnitude > 300)
510        {
511            voimaMittari1.Value -= 5;
512        }
513
514        //if (auto2.Velocity.Magnitude > auto1.Velocity.Magnitude)
515        //{
516        //    voimaMittari1.Value -= 5;
517        //}
518    }
519    void KasitteleAuto2Tormays(PhysicsObject auto2, PhysicsObject kohde)
520    {
521
522        if (auto2.Velocity.Magnitude > 300)
523        {
524            voimaMittari2.Value -= 5;
525        }
526
527        //if (auto1.Velocity.Magnitude > auto2.Velocity.Magnitude)
528        //{
529        //    voimaMittari2.Value -= 5;
530        //}
531    }
532    void LisaaLaskurit()
533    {
534        pelaajan1Pisteet = LuoPisteLaskuri(-100.0, 0.0);
535        pelaajan1Pisteet.UpperLimit += delegate { Voitto(auto1); };
536        pelaajan2Pisteet = LuoPisteLaskuri(100.0, 0.0);
537        pelaajan2Pisteet.UpperLimit += delegate { Voitto(auto2); };
538    }
539    IntMeter LuoPisteLaskuri(double x, double y)
540    {
541        IntMeter laskuri = new IntMeter(0);
542        laskuri.MaxValue = MontakoPistettaVoittoon;
543        Label naytto = new Label();
544        naytto.BindTo(laskuri);
545        naytto.X = x;
546        naytto.Y = y;
547        naytto.TextColor = Color.DarkGray;
548        Add(naytto);
549        return laskuri;
550    }
551    void UusiEra()
552    {
553        //ClearControls();
554
555        voimaMittari1.Value = 50;
556        voimaMittari2.Value = 50;
557
558
559
560        Aftermath();
561
562    }
563
564    void AloitaAmpuminen(Automobile auto, Weapon ase)
565    {
566        if (auto == auto1)
567        {
568            auto1.Animation.Start();
569        }
570        else
571        {
572
573            auto2.Animation.Start();
574        }
575    }
576
577    void LopetaAmpuminen(Automobile auto, Weapon ase)
578    {
579        if (auto == auto1)
580        {
581            auto1.Animation.Stop();
582        }
583        else
584        {
585            auto2.Animation.Stop();
586        }
587
588    }
589
590    void AmmuAseella(Automobile auto, Weapon ase)
591    {
592        PhysicsObject ammus = ase.Shoot();
593
594        if (ammus != null)
595        {
596            ammus.CollisionIgnorer = auto.CollisionIgnorer;
597            ammus.IgnoresExplosions = true;
598            ammus.Size *= 2;
599            ammus.Image = kuti;
600            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.4);
601            AddCollisionHandler(ammus, AmmusOsui);
602        }
603    }
604
605    void AmmuNaatti1(Automobile auto)
606    {
607        if (voikoPelaaja1Heittaa)
608        {
609            voikoPelaaja1Heittaa = false;
610            Grenade kranu = new Grenade(0.7);
611            kranu.FuseTime = TimeSpan.FromSeconds(0.4);
612            kranu.ExplosionRadius = 50;
613            kranu.ExplosionForce = 15000;
614            kranu.ExplosionSpeed = 100;
615            kranu.MaximumLifetime = TimeSpan.FromSeconds(1);
616            Add(kranu);
617            kranu.Position = auto.Position + Vector.FromLengthAndAngle(35, (auto.Angle + Angle.FromDegrees(180)));
618            kranu.Angle = auto.Angle + Angle.FromDegrees(180);
619            Vector heittoVoima = Vector.FromLengthAndAngle(10000, (auto.Angle + Angle.FromDegrees(180)));
620            kranu.Hit(heittoVoima);
621
622            if (kranu != null)
623            {
624                kranu.Size *= 4;
625                AddCollisionHandler(kranu, KranaattiOsui);
626            }
627            Timer.SingleShot(2.0, delegate { voikoPelaaja1Heittaa = true; });
628        }
629    }
630    void AmmuNaatti2(Automobile auto)
631    {
632        if (voikoPelaaja2Heittaa)
633        {
634            voikoPelaaja2Heittaa = false;
635            Grenade kranu = new Grenade(0.7);
636            kranu.FuseTime = TimeSpan.FromSeconds(0.4);
637            kranu.ExplosionRadius = 50;
638            kranu.ExplosionForce = 15000;
639            kranu.ExplosionSpeed = 100;
640            kranu.MaximumLifetime = TimeSpan.FromSeconds(1);
641            Add(kranu);
642            kranu.Position = auto.Position + Vector.FromLengthAndAngle(35, (auto.Angle + Angle.FromDegrees(180)));
643            kranu.Angle = auto.Angle + Angle.FromDegrees(180);
644            Vector heittoVoima = Vector.FromLengthAndAngle(10000, (auto.Angle + Angle.FromDegrees(180)));
645            kranu.Hit(heittoVoima);
646           
647            if (kranu != null)
648            {
649                kranu.Size *= 4;
650                AddCollisionHandler(kranu, KranaattiOsui);
651            }
652            Timer.SingleShot(2.0, delegate { voikoPelaaja2Heittaa = true; });
653        }
654    }
655    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
656    {
657        ammus.Destroy();
658
659        if (kohde == auto1)
660        {
661            voimaMittari1.Value--;
662            return;
663        }
664        if (kohde == auto2)
665        {
666            voimaMittari2.Value--;
667            return;
668        }
669    }
670    void KranaattiOsui(PhysicsObject kranu, PhysicsObject kohde)
671    {
672        kranu.Destroy();
673
674        if (kohde == auto1)
675        {
676            voimaMittari1.Value -= 20;
677            return;
678        }
679        if (kohde == auto2)
680        {
681            voimaMittari2.Value -= 20;
682            return;
683        }
684    }
685    void Aftermath()
686    {
687        Timer jalkiaika = new Timer();
688        jalkiaika.Interval = 3;
689        jalkiaika.Timeout += EranAlku;
690        jalkiaika.Start(1);
691    }
692    void EranAlku()
693    {
694
695        //Add(auto1, 0);
696        //Add(auto2, 0);
697
698        auto1.X = -300;
699        auto1.Y = 0;
700        auto2.X = 300;
701        auto2.Y = 0;
702
703        auto1.Angle = new Angle();
704        auto2.Angle = Angle.FromDegrees(180.0);
705
706        auto1.Stop();
707        auto2.Stop();
708
709        auto1.Animation.Stop();
710        auto2.Animation.Stop();
711
712        ClearControls();
713
714        MessageDisplay.Clear();
715
716        Timer aikaLaskuri = new Timer();
717        aikaLaskuri.Interval = 3;
718        aikaLaskuri.Trigger += AikaLoppui;
719        aikaLaskuri.Start();
720
721        aikaNaytto = new Label();
722        aikaNaytto.TextColor = Color.White;
723        aikaNaytto.X = 0.0;
724        aikaNaytto.Y = 0.0;
725        aikaNaytto.DecimalPlaces = 1;
726        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
727        Add(aikaNaytto);
728
729        pyssy1.Ammo.Value = 9999;
730        pyssy2.Ammo.Value = 9999;
731
732        auto1.Angle = new Angle();
733        auto2.Angle = Angle.FromDegrees(180.0);
734
735        auto1.Stop();
736        auto2.Stop();
737
738        if (auto1.IsDestroyed)
739        {
740            Autot(1);
741            Add(auto1, 0);
742        }
743        if (auto2.IsDestroyed)
744        {
745            Autot(2);
746            Add(auto2, 0);
747        }
748    }
749
750    void AikaLoppui(Timer ajastin)
751    {
752
753
754        auto1.Animation.Stop();
755        auto2.Animation.Stop();
756
757        auto1.X = -300;
758        auto1.Y = 0;
759        auto2.X = 300;
760        auto2.Y = 0;
761
762        MessageDisplay.Add("Start!");
763        MessageDisplay.TextColor = Color.White;
764        MessageDisplay.X = 490.0;
765        MessageDisplay.Y = 350.0;
766        ajastin.Stop();
767        ajastin.Reset();
768        ajastin.Stop();
769        aikaNaytto.Destroy();
770        AsetaOhjaimet();
771
772        pyssy1.Ammo.Value = 9999;
773        pyssy2.Ammo.Value = 9999;
774    }
775
776    void Loppui()
777    {
778        Remove(auto1);
779        Remove(auto2);
780        Timer lopunLaskuri = new Timer();
781        lopunLaskuri.Interval = 3;
782        lopunLaskuri.Trigger += PeliLoppui;
783        lopunLaskuri.Start();
784    }
785    void PeliLoppui(Timer ajastin)
786    {
787        Valikko();
788        Level.BackgroundColor = Color.LightBlue;
789    }
790}
Note: See TracBrowser for help on using the repository browser.