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

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