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

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